06. maj 2003 - 22:01
Der er
5 kommentarer og 1 løsning
start funktion onselectionchange (WYSIWYG)
Jeg har en editor jeg gerne vil have til at udføre en funktion når brugeren har markeret et eller andet i editor vinduet. Dette er hvad jeg har, men det virker ikke helt efter hensigten. :) dvs... det virker ikke. :) ------------------------------- window.onload = start; function start() { hovededitor.document.designMode = 'On'; hovededitor.document.execCommand("2D-Position",false, true); hovededitor.document.onselectionchange = function () { visMarkering(); } } ----------------------------------------
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
Ehh har du ikke andet end det der? Hvad har du i visMarkering()?
Du skal kigge på den selection der er lavet i "hovededitor". Noget i stil med: <script> window.onload = start; function visMarkering() { if (hovededitor.document.selection.type=="Text") { tRange=hovededitor.document.selection.createRange(); alert(tRange.text); } } function start() { hovededitor.document.designMode = 'On'; hovededitor.document.execCommand("2D-Position",false, true); hovededitor.document.onselectionchange = function () { parent.visMarkering(); } } </script>
Her er visMarkering og der skulle jeg mene at jeg allerede kigger på den selection :) function visMarkering() { if (editModeOn == true) //Det er den så :) { if (hovededitor.document.selection.type != "Control") { if (document.getElementById("fonttype") != null) { fontName = hovededitor.document.queryCommandValue('FontName') if ((fontName == null) || (fontName == "")) { fontName = "Font" } } if (document.getElementById("stor") != null) { fontSize = hovededitor.document.queryCommandValue('FontSize') if ((fontSize == null) || (fontSize == "0")) { fontSize = "Størrelse" } } if (document.getElementById("fonttype") != null) { document.getElementById("fonttype").options[0].text = fontName } if (document.getElementById("stor") != null) { document.getElementById("stor").options[0].text = fontSize } } else { if (document.getElementById("fonttype") != null) { document.getElementById("fonttype").options[0].text = "Font"; } if (document.getElementById("stor") != null) { document.getElementById("stor").options[0].text = "Size"; } } if (document.getElementById("fonttype") != null) { document.getElementById("fonttype").selectedIndex = 0; } if (document.getElementById("stor") != null) { document.getElementById("stor").selectedIndex = 0; } } }
Koden virker sådan set fint nok når jeg aktiverer den fra en anden funktion der er klik afhængig. Nu skal den bare virke onselectionchange. :)
Det virker den da også med. Den undrede mig lidt, så jeg lavede en lignende side, og det virker med det samme. <html> <script> window.onload = start; var editModeOn=false; function visMarkering() { if (editModeOn == true) //Det er den så :) { if (hovededitor.document.selection.type != "Control") { if (document.getElementById("fonttype") != null) { fontName = hovededitor.document.queryCommandValue('FontName') if ((fontName == null) || (fontName == "")) { fontName = "Font" } } if (document.getElementById("stor") != null) { fontSize = hovededitor.document.queryCommandValue('FontSize') if ((fontSize == null) || (fontSize == "0")) { fontSize = "Størrelse" } } if (document.getElementById("fonttype") != null) { document.getElementById("fonttype").options[0].text = fontName } if (document.getElementById("stor") != null) { document.getElementById("stor").options[0].text = fontSize } } else { if (document.getElementById("fonttype") != null) { document.getElementById("fonttype").options[0].text = "Font"; } if (document.getElementById("stor") != null) { document.getElementById("stor").options[0].text = "Size"; } } if (document.getElementById("fonttype") != null) { document.getElementById("fonttype").selectedIndex = 0; } if (document.getElementById("stor") != null) { document.getElementById("stor").selectedIndex = 0; } } } function visMarkering1() { if (hovededitor.document.selection.type=="Text") { tRange=hovededitor.document.selection.createRange(); alert(tRange.text); } } function start() { hovededitor.document.designMode = 'On'; hovededitor.document.execCommand("2D-Position",false, true); hovededitor.document.onselectionchange = function () { parent.visMarkering(); } editModeOn=true; } </script> <body> Font: <select id="fonttype"><option>Ingenting</select> Størrelse: <select id="stor"><option>Ingenting</select> <iframe id="hovededitor" src="blank.htm" width="100%" height="90%"></iframe> </body> </html>
Jeg bøvlede lidt med det og fandt ud af at jeg ikke kunne få det til at virke fordi jeg også havde en onload i min body tag. Så virkede window.onload åbentbart ikke. Men tak for det simple eksempel. Så kunne jeg da se at det gerne skulle virke.
Vi tilbyder markedets bedste kurser inden for webudvikling