/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Vælg tekst i et textarea, og lav det til e~
Fra : Jonas Voss


Dato : 14-10-04 20:53

Lad mig forklare hvad jeg søger lidt nærmere.

En side har et textarea, hvor besøgende kan skrive tekst i (sjovt nok),
som efter endt indtastning bliver sendt til databasen bag siden.
De besøgende skal også kunne lave tekst om til hyperlinks, og jeg kan
simpelthen ikke hitte ud af det. Tanken er, at hvis jeg har teksten

"Dette sted er godt"

Så skal jeg kunne vælge teksten i textarea, herefter klikke på et link der
activerer noget javascript, dette javascript skal så give den besøgende
en boks de kan indtaste en URL ind i, og trykke ok, hvorefter teksten i
deres tekstarea bliver omkranset af den nødvendige HTML:

"<a href="http://linktilgodtsted.com/">Dette sted er godt</a>"

Jeg har fundet følgende kode på nettet:

function makeLink()
{
   var currentSel = document.selection.createRange();
   //make sure its not empty

   if(currentSel.text != "")
   {
      if(confirm("Do you want to make the selection a hyperlink?"))
      {
         var the_link

         //create a HYPERLINK around our current selection
         document.execCommand('CreateLink','',currentSel.text);
         
         //get the HYPERLINK element object which we just created
         the_link = currentSel.parentElement()
         //set the target to whatever we want
         the_link.target = "_blank"
         
         //remove selection to prevent calling this function again
         currentSel.execCommand('Unselect', '')
      }
   }
}

Og prøver at udføre den med et link inde i form således:

<a href="#" onclick="makeLink();">Lav til link</a>.

Det virker desværre ikke. Jeg får følgende fra min js-debugger:

Camino[8645] JS error: document.selection has no properties

Og det er så her jeg må kaste håndklædet i ringen.

Jeg har googlet efter noget andet kode, men det er åbenbart sværre end
som så, at finde det. Jeg ville ellers tro det var noget nettet flød
over med.

Men er der nogen herinde der kan fortælle mig hvor det er det går galt
henne?

--
| Jonas @ 55.75, 12.42 | <http://blog.verture.net/> |

Five exclamation marks, the sure sign of an insane mind.

 
 
Jens Gyldenkærne Cla~ (14-10-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-10-04 22:48

Jonas Voss skrev:

> Jeg har fundet følgende kode på nettet:

Har du et link til der hvor du fandt den?

> var currentSel = document.selection.createRange();

Document.selection er en IE-ting - den virker ikke i Gecko-baserede
browsere og så vidt jeg kan se heller ikke i Opera.


> Jeg har googlet efter noget andet kode, men det er åbenbart
> sværre end som så, at finde det. Jeg ville ellers tro det var
> noget nettet flød over med.

Her er der noget der er baseret på Mozilla/Gecko:
<http://dev.lophty.com/ahoy/article.htm>

Jeg har ikke afprøvet det.


> Men er der nogen herinde der kan fortælle mig hvor det er det
> går galt henne?

Generelt er der ikke nogen standardmetoder til at tilgå den valgte
tekst. Gecko har window.getSelection() hvor IE har
document.selection (jeg ved ikke om Opera har noget lignende).

Derfor er det svært at finde noget der virker generelt.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jonas Voss (15-10-2004)
Kommentar
Fra : Jonas Voss


Dato : 15-10-04 09:44

In dk.edb.internet.webdesign.clientside, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

> Har du et link til der hvor du fandt den?

Jeg fandt den her, i en nyhedsgruppe:

<http://shor.ter.dk/166469001>

> Document.selection er en IE-ting - den virker ikke i Gecko-baserede
> browsere og så vidt jeg kan se heller ikke i Opera.

Det forklarer nok en del, jeg har ikke forsøgt at køre det under IE, kun
under Gecko-browsere.

> Her er der noget der er baseret på Mozilla/Gecko:
> <http://dev.lophty.com/ahoy/article.htm>

> Jeg har ikke afprøvet det.

Takker.

> Generelt er der ikke nogen standardmetoder til at tilgå den valgte
> tekst. Gecko har window.getSelection() hvor IE har
> document.selection (jeg ved ikke om Opera har noget lignende).

> Derfor er det svært at finde noget der virker generelt.

Ok, jeg kigger på det Martin har postet, det ser lovende ud.

Tak for dit svar.

--
| Jonas @ 55.75, 12.42 | <http://blog.verture.net/> |

The sooner you fall behind,
the more time you'll have to catch up. - Steven Wright

Martin Hintzmann And~ (15-10-2004)
Kommentar
Fra : Martin Hintzmann And~


Dato : 15-10-04 08:22

Jonas Voss wrote:
>
> Men er der nogen herinde der kan fortælle mig hvor det er det går galt
> henne?
>

Jeg skal ikke kunne sige hvorfor din funktion ikke virker, men hvis du
giver et link til et online eksempel så kan jeg nemmere debug'e den.

Jeg har lavet en simpel textarea editor, det kan være at du kan få nogle
ideer derfra.
http://www.hintzmann.dk/demos/simpletextareaeditor/default.html

Kig på funktionerne :
setHTML()
ste._setSelectionRange()
ste._replaceSelection()
ste.getSelection()

Som du kan se så bruger mozilla document.setSelectionRange, mens IE
burger document.selection.

--
Martin Hintzmann Andersen
http://www.hintzmann.dk/

Jonas Voss (15-10-2004)
Kommentar
Fra : Jonas Voss


Dato : 15-10-04 09:46

In dk.edb.internet.webdesign.clientside, Martin Hintzmann Andersen <no@spam.please> wrote:

> Jeg skal ikke kunne sige hvorfor din funktion ikke virker, men hvis du
> giver et link til et online eksempel så kan jeg nemmere debug'e den.

Det er der vist ingen årsag til at belemre dig med, men tak for
tilbuddet.

Jeg tror årsagen til at det ikke virkede var, at jeg afprøvede noget
IE-specifikt kode under en Gecko-browser. Det tager jeg i hvert fald som
forklaring.

> Jeg har lavet en simpel textarea editor, det kan være at du kan få nogle
> ideer derfra.
> http://www.hintzmann.dk/demos/simpletextareaeditor/default.html

> Kig på funktionerne :
> setHTML()
> ste._setSelectionRange()
> ste._replaceSelection()
> ste.getSelection()

> Som du kan se så bruger mozilla document.setSelectionRange, mens IE
> burger document.selection.

Tusind tak, det kan jeg helt sikkert få nogle ideer fra.

--
| Jonas @ 55.75, 12.42 | <http://blog.verture.net/> |

If you're not part of the solution,
you're part of the precipitate. - Steven Wright

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste