webForumDet fria alternativet

Flytta markör i textfält(wysiwyg)

4 svar · 437 visningar · startad av mozilla

mozillaMedlem sedan juli 20011 084 inlägg
#1

Jag håller på och bygger lite på en wysiwyg-editor, just nu bara i Firefox så jag är därför framförallt intresserad av kod som fungerar där. Jag vill sätta in egna html-kommandon i mitt textfält och sedan ställa markören efter insättningen. Att sätta in html-koden är inget problem. Problemet ligger i att text-markören hoppar till början av texten hela tiden. Det bästa vore om man kunde bestämma efter hur många tecken man ska placera in markören. Men någon sådan funktion har jag inte hittat. Något som känner till hur man löser det?

Peter SMedlem sedan dec. 20025 483 inlägg
#2

Testa:

var elm = document.forms["foo"].elements["bar"];
elm.setSelectionRange(4,4);
elm.focus();
mozillaMedlem sedan juli 20011 084 inlägg
#3

Det verkar vara precis vad jag söker men... jag får det inte att fungera tillsammans med wysiwyg-editorn. x( För då använder man ju sig av en iframe och det finns en massa andra olika egenskaper. Jag har testat de flesta tycker jag men får det ändå inte att fungera. Någon som vet om det fungerar överhuvudtaget med "setSelectionRange" och i så fall hur man skriver?

Jag har under dagen testat mig fram men inte hittat en lösning som fungerar tillfredställande. Det går visserligen att lösa genom att använda insertBefore och sedan skapa text-noder för texten och element-noder för kodtaggarna. Problemet är att den automatiskt slänger på en sluttagg också. Det vill jag inte. Utan jag vill bara lägga till en starttagg. Den enda lösningen som verkar gör detta är att ändra innerHtml på wysiwyg-editorn. Men då får jag problemet med att markören hoppar till början av texten.

Någon som har några fler/andra idéer på hur man kan göra? Mina börjar ta slut :OO

Hur wysiwyg fungerar i firefox
Exempel på en färdig wysiwyg

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Om vi utgår från Mozillas demo; hur skall man klicka sig fram för att uppleva problemet du beskriver?

mozillaMedlem sedan juli 20011 084 inlägg
#5

Det finns två olika scenarion i deras demo. Antingen att man helt enkelt skriver in en massa text, sedan ställer man markören mitt i och klickar på "bold". Då vill jag att en <b>-tagg ska starta där och göra all text bakom fet-markerad. Men som det fungerar nu så sätter den in <b></b> med en gång. Och texten som man skriver hamnar mellan <b> taggarna.

Alternativt om man klickar på "insert table" så finns det en annan funktion för att infoga htmlkod och placera pekaren rätt(insertNodeAtSelection). Men den använder sig av createElement("table") och den skapar också automatiskt en start och en slutatagg. I funktionen kan man också använda sig av container.insertData(), men den sätter bara in ren tex och skriver därför <b>.

132 ms totalt · 3 externa anrop · v20260731065814-full.cf67ef55
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)