26. oktober 2003 - 15:12
Der er
20 kommentarer og 1 løsning
Tilføje tekst / HTML til div
Hej Jeg sidder og kigger lidt på lidt dhtml med div etc. Har fundet ud at bruge document.getElementById("div").innerText = "tekst " + sel + " tekst"; Det tager og sætter værdien af hele diven lig med de tekster og den markerede tekst. Hvordan sørger jeg for at jeg kun sætter værdien ind på den markerede plads. Altså så det ikke er alt teksten i div der bliver erstatter men kun det markerede, eller at det bliver tilføjet der hvor markøren står? Min Div er <div id="div" contenteditable></div>
Annonceindlæg fra SuperOffice
26. oktober 2003 - 15:15
#1
Du skal bruge et textRange-objekt !-)
26. oktober 2003 - 15:16
#2
Har du et kodeeksempel? Jeg er stadig lidt grøn i javascript :-)
26. oktober 2003 - 15:38
#4
Hmm lidt nærmere kom jeg da, selvom jeg havde kigget lidt på det createrange. Min kode: sel = document.selection.createRange().text; document.selection.createRange().text = "<b>" + sel + "</b>"; virker fint med ren tekst, dvs. at den indsætter <b>markeret tekst</b> i div'en men ikke som html. Hvordan får jeg den til at virke som innerHTML? Endvidere virker det ikke hvis jeg kun har sat markøren, der skal være markeret noget først.
26. oktober 2003 - 15:40
#5
Der er et attribut der hedder htmlText men det virker ikke, giver mig fejlen: "Objektet understøtter ikke denne handling" Og som det fremgår af MSDN kan den kun modtage: Retrieves the HTML source as a valid HTML fragment.
26. oktober 2003 - 15:45
#6
Lige et lille tillægsspørgsmål som jeg opdagede ikke virkede, er det muligt at lave en div contenteditable som også virker i opera?
26. oktober 2003 - 15:47
#7
Men der er en metode, du kan bruge !-) TextRange.pasteHTML(sHTMLText)
26. oktober 2003 - 15:48
#8
-- selvom Opera har gjort meget for at være kompatibel med IE tror jeg ikke du skal regne med at den slags proprietære ting virker i andet end IE !-)
26. oktober 2003 - 15:51
#9
Så jeg ville: range = document.selection.createRange(); range.pasteHTML("<b>" + range.htmlText + "</b>");
26. oktober 2003 - 15:54
#10
Hmm jeg sad lige og prøvede lidt frem og tilbage, men kunne ikke få det til at virke - men din virkede fint. ;-) Er det på nogen måde muligt at lave en crossbrowser wysiwyg-editor? (og ikke med iframes)
26. oktober 2003 - 15:57
#11
Såvidt jeg ved ikke på nuværende tidspunkt !-) Mozilla har nu fået en editor-mulighed, men den skulle være væsensforskellig fra IEs DHTML-editing component (som jeg har forstået er et ActiveX-objekt), så det har nok lange udsigter !-) Men måske når vi når html 6 (og css 4 og javascript 2 ?-) -- men velbekomme '-)
26. oktober 2003 - 16:01
#12
Hmm - det stiller jo IE ufatteligt stærkt på det område. Men jeg glæder mig til html 6.0 :-) Har du nogle links der forklarer lidt om mozillas editor mulighed? og evt. fra hvilken version? Er det muligt at lave en crossbrowser wysiwyg editor med iframes / ilayers?
26. oktober 2003 - 16:17
#14
Hmm man må nok bare acceptere at det ikke er nemt at lave en crossbrowser editor. Men jeg vil kigge på dine links. htm takker og giver roenvig god karma :-)
26. oktober 2003 - 16:17
#15
Ups roenving selvfølgelig ;-)
26. oktober 2003 - 16:22
#16
-- og jeg takker for points ;~}
26. oktober 2003 - 16:29
#17
Et lille sidste spørgsmål: Burde dette ikke virke i mozilla 1.5? document.getElementById("div").pasteHTML = "tekst tekst"; Det virker fint i opera 7.11 og IE 6.0, men i mozilla sker der intet, er det korrekt syntaks?
26. oktober 2003 - 16:40
#18
pasteHTML er noget, som kun understøttes af IE (og -kloner !-)
26. oktober 2003 - 16:40
#19
-- men du kan da bruge .innerHTML !-)
26. oktober 2003 - 16:43
#20
Ok mange tak, den virker. havde ellers forsøgt med innerText men det gav samme resultat som pasteHTML.
26. oktober 2003 - 16:55
#21
.innerText er også en M$-ting !-)
Vi tilbyder markedets bedste kurser inden for webudvikling