Heim  >  Artikel  >  Web-Frontend  >  Diskussion zum Thema Iframe-Knoteninitialisierung_HTML/Xhtml_Webseitenproduktion

Diskussion zum Thema Iframe-Knoteninitialisierung_HTML/Xhtml_Webseitenproduktion

WBOY
WBOYOriginal
2016-05-16 16:38:341211Durchsuche

Heute wollte ich plötzlich die Prinzipien der Erstellung eines Rich-Text-Editors überprüfen. Also fing ich an, es Schritt für Schritt zu tun, ohne ein Wort zu sagen. Da ich vor einem Jahr einen einfachen Rich-Text-Editor geschrieben habe, habe ich wahrscheinlich noch einige Eindrücke. Aber als ich den von mir geschriebenen Code ausführte, stellte ich ein Problem fest:

Kopieren Sie den Code
Der Code lautet wie folgt:

var ifr = document.createElement('iframe');
ifr.width = 300;
var idoc = ifr.contentDocument || ifr .contentWindow.document;
idoc.designMode = 'on';
idoc.contentEditable = true;
idoc.write(''); > Schauen Sie sich den Code oben an. Haben Sie Fehler gefunden?

Ich denke, wenn es keine Kinder gibt, die ähnliche Erfahrungen gemacht haben wie ich, werden sie wahrscheinlich nicht erkennen können, was an diesem Code falsch ist. Gehen Sie also genauso gut laufen, vielleicht finden Sie das Problem bald.
Lassen Sie mich die Antwort unten verraten:

Dieser Code löst eine Ausnahme „Objekt nicht gefunden“ aus. Welches Objekt kann nicht gefunden werden? Das Dokumentobjekt kann nicht gefunden werden. Was? Wie kann es sein, dass das Dokumentobjekt nicht gefunden werden kann? Dieses Dokumentobjekt ist natürlich das Dokumentobjekt des Iframes. Jeder, der Rich Text erstellt hat, weiß, dass Sie zunächst das Dokumentobjekt des Iframes abrufen müssen, bevor Sie es bearbeitbar machen können. Aber warum können wir das Dokumentobjekt nicht erhalten? Ich werde hier nicht zu anmaßend sein. Lassen Sie mich über meinen Lösungsprozess sprechen.

Zuerst ging ich zu Google und stellte fest, dass die Art und Weise, wie ich das Dokument erhalten hatte, korrekt war. Dann fragte ich mich, ob es Chrome war? Unterstützt Chrome diese beiden Objekte nicht? Also bin ich auf Firefox umgestiegen. Das Ergebnis ist immer noch das gleiche. Dann ist sicher, dass es sich um ein Problem mit Ihrem eigenen Code handeln muss.

Später, als ich den Code im Internet verglich, stellte ich fest, dass die Position meines appendChild etwas falsch war, also habe ich es vorzeitig verschoben, um das Dokumentobjekt zu erhalten:





Code kopieren
Der Code lautet wie folgt: var ifr = document.createElement('iframe'); >ifr.width = 300; ifr.body.appendChild(ifr.contentWindow.document); designMode = 'on';
idoc.contentEditable = true;
idoc.write('