Ik zal even bij het begin beginnen:
Ik ben bezig met het maken van mijn eigen CMS. Waarom niet bestaande gebruiken? Veel te uitgebreid en moeilijk om te begrijpen als je dus functies toe wilt voegen of veranderen.
Het hele CMS functioneert eigenlijk al, ik kan met soort UBB codes werken en daarmee headings maken en bold etc. Maar ik wil nu eigenlijk de overstap maken naar een WYSIWYG editor.
Na al heel veel gekloot met javascript en alle gedoe eromheen ben ik eindelijk zover dat ik de basisfunctionaliteit werkend heb in IE en FF ( beide laatste versies ).
Mijn probleem begint nu voor bijvoorbeeld de hyperlink. Wat ik al voor elkaar heb in IE is dat als ik op de knop klik ik op de plek van de cursor een stuk tekst geplakt krijg.
Ohja, ik wil dus gebruik maken van pasteHTML en niet van execCommand("createlink"..) omdat ik een target toe wil kunnen voegen.
Ik heb al veel gezeur gehad met het laten werken van de knoppen bold italic etc. Dus ik ben al heel blij dat dat werkt in IE en FF. Maar nu zit ik dus tegen ongeveer hetzelfde probleem bij de pasteHTML.
Ik heb het volgende form op mijn site staan:
Vervolgens heb ik dus dit javascriptbestand:
Waar ik denk dat het probleem zit is op regel 13 van het javascriptbestand. In IE7 werkt het wel, maar in FF krijg ik de melding: Error: document.getElementById("iframe").contentWindow.document.selection has no properties
En deze refereert dus naar de regel die ik al aangaf.
Hoe op te lossen: het "pad" klopt volgens mij niet helemaal ( document.geteElementById.... etc ). Dit probleem heb ik dus ook al gehad met de simpele functies voor bold icm met de execCommand. En nu zit ik dus wederom met hetzelfde probleem. Als ik het pad maak zoals ik bijvoorbeeld bij de functie start() doe dan weigert FF nog steeds terwijl IE gewoon blijft werken.
Wat ik al zelf geprobeerd heb is nakijken hoe andere WYSIWYG editors kunnen en welke werken. Er is er een die werkt al via een popup ( wat uiteindelijk de bedoeling is... ) maar ik heb daarvan de code doorgespit en getracht dit over te zetten naar mijn variant, maar dat mislukte. Verder op google gezocht naar een voorbeeld wat zowel in IE als FF werkt, maar ook dat is mislukt.
Via deze link bijvoorbeeld: http://samples.msdn.micro...xecCommand_CreateLink.htm werkt het in IE dus, maar dat is via het execCommand, maar dit werkt dus in FF niet eens..!
Ik ben bezig met het maken van mijn eigen CMS. Waarom niet bestaande gebruiken? Veel te uitgebreid en moeilijk om te begrijpen als je dus functies toe wilt voegen of veranderen.
Het hele CMS functioneert eigenlijk al, ik kan met soort UBB codes werken en daarmee headings maken en bold etc. Maar ik wil nu eigenlijk de overstap maken naar een WYSIWYG editor.
Na al heel veel gekloot met javascript en alle gedoe eromheen ben ik eindelijk zover dat ik de basisfunctionaliteit werkend heb in IE en FF ( beide laatste versies ).
Mijn probleem begint nu voor bijvoorbeeld de hyperlink. Wat ik al voor elkaar heb in IE is dat als ik op de knop klik ik op de plek van de cursor een stuk tekst geplakt krijg.
Ohja, ik wil dus gebruik maken van pasteHTML en niet van execCommand("createlink"..) omdat ik een target toe wil kunnen voegen.
Ik heb al veel gezeur gehad met het laten werken van de knoppen bold italic etc. Dus ik ben al heel blij dat dat werkt in IE en FF. Maar nu zit ik dus tegen ongeveer hetzelfde probleem bij de pasteHTML.
Ik heb het volgende form op mijn site staan:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
| <div class="text"> Verander hieronder de tekst dat hoort bij menu-item: <? echo"$get_name"; ?><br /><br /> <form action="javascript:save()" method="post"> <script language="javascript" type="text/javascript" src="cms_inc/richtext.js"></script> <div id="toolbar"><? include('cms_inc/richtext_toolbar.php'); ?></div> <iframe id="iframe" name="iframe" onload="start()" frameborder="0" marginheight="0" height="300" width="600" src="cms_inc/cms_show_text.php?name=<? echo"$get_name"; ?>" ></iframe> <input type="submit" name="do" value="Wijzig tekst" /> </form> <form action="index.php?action=<? echo"$get_action"; ?>&step=2&name=<? echo"$get_name"; ?>" method="post" id="save" style="display: none;"> <textarea name="text" id="text"></textarea> </form> </div> |
Vervolgens heb ik dus dit javascriptbestand:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| function start() { iframe.document.designMode = 'On'; } function text_edit(command,ext) { iframe.document.execCommand(command, false, ext); } function save() { var htmlCode = document.getElementById('iframe').contentWindow.document.body.innerHTML; document.getElementById("text").value = htmlCode; document.getElementById("save").submit(); } function createlink() { var bla = document.getElementById('iframe').contentWindow.document.selection.createRange(); bla.pasteHTML ("HALLO"); } |
Waar ik denk dat het probleem zit is op regel 13 van het javascriptbestand. In IE7 werkt het wel, maar in FF krijg ik de melding: Error: document.getElementById("iframe").contentWindow.document.selection has no properties
En deze refereert dus naar de regel die ik al aangaf.
Hoe op te lossen: het "pad" klopt volgens mij niet helemaal ( document.geteElementById.... etc ). Dit probleem heb ik dus ook al gehad met de simpele functies voor bold icm met de execCommand. En nu zit ik dus wederom met hetzelfde probleem. Als ik het pad maak zoals ik bijvoorbeeld bij de functie start() doe dan weigert FF nog steeds terwijl IE gewoon blijft werken.
Wat ik al zelf geprobeerd heb is nakijken hoe andere WYSIWYG editors kunnen en welke werken. Er is er een die werkt al via een popup ( wat uiteindelijk de bedoeling is... ) maar ik heb daarvan de code doorgespit en getracht dit over te zetten naar mijn variant, maar dat mislukte. Verder op google gezocht naar een voorbeeld wat zowel in IE als FF werkt, maar ook dat is mislukt.
Via deze link bijvoorbeeld: http://samples.msdn.micro...xecCommand_CreateLink.htm werkt het in IE dus, maar dat is via het execCommand, maar dit werkt dus in FF niet eens..!