Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[JS] WYSIWYG-editor designmode=on IE probleem

Pagina: 1
Acties:
  • 379 views sinds 30-01-2008
  • Reageer

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Ik heb het probleem dat mijn editor perfect werkt in Firefox maar niet in IE, de basis van mijn editor heb ik afgekeken van een tutorial website (kan hem niet meer vinden)

maar dit is het stukje code waar het om gaat
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function maak_frame(content){
// IE, FF switch
 if(window.navigator.appName == "Microsoft Internet Explorer"){
 document.getElementById('normaal').contentWindow.document.designMode = "on"; //werkt niet
 normaal.document.designMode = "on"; //werkt maar kan niets typen
 }
 if(window.navigator.appName == "Netscape"){
  document.getElementById('normaal').contentDocument.designMode = "on";
}
document.getElementById('normaal').contentWindow.document.body.innerHTML=content;
}


Nu de melding in IE is als volgt:
"'document.getElementById(...).contentWindows.document.body' is leeg of geen object

Aangezien dat mijn editor al voor 80% gevorderd is en het werkt in firefox zou ik graag weten hoe ik dit simpel kan oplossen :)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Toch al vast maar even een subtiel kickje aangezien ik er nog altijd niet uitkom :)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • moozzuzz
  • Registratie: Januari 2005
  • Niet online
Probeer even met je eigen woorden uit te leggen wat je code doet, meestal kom je dan automagisch tot de oplossing. Dit snippet is (voor mij) te klein om het te snappen :^)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

moozzuzz schreef op zaterdag 18 augustus 2007 @ 10:18:
Probeer even met je eigen woorden uit te leggen wat je code doet, meestal kom je dan automagisch tot de oplossing. Dit snippet is (voor mij) te klein om het te snappen :^)
Ehm, als je het niet snapt, dan kan je beter even gewoon meelezen ipv reageren ;)




TS: Ten eerste is het handig om pas NA 24 uur je eigen topic te kicken ;)

Ten tweede, waarom maak je uberhaupt onderscheid (op een hele lelijke manier) tussen FF en IE. Zoals je kan lezen is er een methode die zowel in FF als IE werkt: WYSIWYG Editors in Javascript (startpost)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Excuses voor het kicken :)

JavaScript:
1
  document.getElementById("frame_name").contentWindow.document;


als ik deze manier van werken gebruik in IE7, heb ik het rare probleem dat ik nog steeds de vermelding krijg dat ...contentWindow.document geen object is of leeg is...

Modelbouw - Alles over modelbouw, van RC tot diorama


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Dude you made my day!! 'k Heb ook een topic open, met een probleem i.v.m. focus in m'n iframe die in FF wegviel als ik op een knop klik, maar

JavaScript:
1
document.getElementById('wysiwyg_textarea').contentWindow.focus();


Sinds dat ik het 'document' heb weggelaten na 'contentWindow' werkt het!! Echt, blij da'k dit geprobeerd hebt. Nu bij mij werkt alles wel goed, heb nog maar enkel de knoppen 'bold' - 'italic' - 'underline' die werken natuurlijk.

Als je wil kan'k m'n JS code hier wel posten, of je kan ook hier kijken.

[JS - HTML] WYSIWYG - editor

Onderaan kijken.

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Oke ben weer iets verder, ben er achter gekomen dat het ligt aan de volgende regel:

[code=js]
document.getElementById('normaal').contentWindow.document.body.innerHTML=content;
[/code]

(content is goed, want in FF werkt heel mijn editor dus compleet...)
ik heb het net geprobeerd op de dom manier met appendchild echter maakte dit geen verschil.

En ik wil niet het volgende moeten doen: <iframe src="blabla"...> ;)
de bovenstaande regel doet het dus wel goed in FF :)


Toch niet, vaststelling2
bij deze code
JavaScript:
1
  document.getElementById('normaal').contentWindow.designMode = "on"; 


Krijg ik in zowel IE als in FF inhoud te zien, echter kan ik niets bewerken...

met deze regel:
code:
1
document.getElementById('wysiwyg_textarea').contentWindow.document.designMode = "on";


Krijg ik in FF inhoud en in IE niet, ik kan wel in alle 2 tekst bewerken :+

wie snapt het nog? 8)7


Even herleid naar de basis nog:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
<html>
<head>
<script type="text/javascript" language="javascript">
function maak_frame(){
document.getElementById('wysiwyg_textarea').contentWindow.document.designMode = "on";
document.getElementById('wysiwyg_textarea').contentWindow.document.body.innerHTML="test";
}
</script></head>
<body onload="maak_frame()">
<iframe id="wysiwyg_textarea" name="wysiwyg_textarea"></iframe>
</body>
</html>


In FF werkt dit dus en in IE niet :)

[ Voor 59% gewijzigd door Sjoerd op 19-08-2007 23:39 ]

Modelbouw - Alles over modelbouw, van RC tot diorama


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Heb oplossing voor je.

HTML:
1
2
3
4
5
<form name="wysiwyg_form" method="post" action="add_wysiwyg_exe.php" enctype="multipart/form-data"> 
  <textarea id="wysiwyg_html" name="content_html"></textarea>
  <iframe id="wysiwyg_textarea"></iframe>
  <input type="submit" onclick="exeBoem();" value="klikkeuu">
 </form>


Cascading Stylesheet:
1
2
3
4
5
6
7
8
#wysiwyg_html {
 visibility:hidden;
 height: 0px;
 width: 0px;
 margin: 0px;
 padding: 0px;
 border: 0px;
}


PHP:
1
2
3
<?
echo $_POST['content_html'];
?>


Nu, als je dus op je knop klikt gaat hij zowel in IE als in FF je tekst afdrukken zonder echt opmaak. Maar als je dan gaat kijken in de code, zie je dus de hele HTML die je dus eigenlijk nodig hebt.

Dit werkt zowel in FF als IE bij mij.

Voor de Javascript kijk je maar op m'n site zelf.

[ Voor 3% gewijzigd door imp4ct op 19-08-2007 23:55 ]

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600


  • Sjoerd
  • Registratie: December 2003
  • Niet online
De enige manier dat het lukt lijkt toch te zijn om te gaan rommelen met "src" van de iframe...
Of heeft iemand adners toch nog een andere oplossing?

Modelbouw - Alles over modelbouw, van RC tot diorama


  • Sjoerd
  • Registratie: December 2003
  • Niet online
Ik weet niet of het een nieuw topic waard is maar goed, dit topic bestaat nu toch al.
Ik werd het prullen zo bui dat ik toch maar besloten heb om met iframe src="blabla" te werken voor mijn wysiwyg, concreet:

ik maak een bestand aan temp.html met hierin de code die ik wil gaan bewerken, temp.html wordt vervolgens ingelezen door de editor en klaar is "kees".

Nu het probleem hiermee: In firefox werkt alles, maar wederom doet internet explorer lastig...
Hij lijkt de pagina temp.html te cachen of iets dergelijks? Dus wanneer ik de tekst verander heeft IE nog steeds de oude tekst. Pas na een manuele f5,refresh heeft hij wel de juiste inhoud. Zelfs wanneer temp.html niet bestaat weet hij toch de vorige inhoud hiervan boven te toveren...

Wat is hier nu de truc voor? wordt een beetje gek van IE op deze manier 8)7

Modelbouw - Alles over modelbouw, van RC tot diorama


  • memento__mori
  • Registratie: April 2004
  • Laatst online: 26-08 07:38
Kan je misschien geen scriptje schrijven om IE de eerste keer de pagina te laten refreshen?
Ik ben zelf geen scripter dus ik zou zo direct geen scriptje weten, maar misschien zijn andere GoT'ers daar wel goed in.

  • Cartman!
  • Registratie: April 2000
  • Niet online
Je moet zorgen dat achter de aanroep van de html pagina een random code zit, die kun je genereren met javascript zodat je iets krijgt als : temp.html?r=43td

  • funkwurm
  • Registratie: December 2005
  • Laatst online: 22-02-2021
Cartman! schreef op maandag 20 augustus 2007 @ 22:26:
Je moet zorgen dat achter de aanroep van de html pagina een random code zit, die kun je genereren met javascript zodat je iets krijgt als : temp.html?r=43td
Neem dan liever new Date().getTime(), die geeft per definitie elke milliseconde een ander getal af

(http://www.w3schools.com/jsref/jsref_obj_date.asp)

  • Sjoerd
  • Registratie: December 2003
  • Niet online
Helden _/-\o_

PHP:
1
$filename_random=$filename."?r=".microtime();


Dat doet het ;)

Modelbouw - Alles over modelbouw, van RC tot diorama


  • imp4ct
  • Registratie: November 2003
  • Laatst online: 29-10 10:59
Sjoerd schreef op maandag 20 augustus 2007 @ 23:11:
Helden _/-\o_

PHP:
1
$filename_random=$filename."?r=".microtime();


Dat doet het ;)
PHP:
1
$filename_random=$filename."?r=".date('U');


Kan je ook gebruiken.

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600

Pagina: 1