Maison >interface Web >tutoriel HTML >Discussion sur la question de la production de pages Web d'initialisation du nœud iframe_HTML/Xhtml_Web

Discussion sur la question de la production de pages Web d'initialisation du nœud iframe_HTML/Xhtml_Web

WBOY
WBOYoriginal
2016-05-16 16:38:341233parcourir

Aujourd'hui, j'ai soudain eu envie de revoir les principes de création d'un éditeur de texte enrichi. J’ai donc commencé à le faire étape par étape sans dire un mot. Parce que j'ai écrit un simple éditeur de texte enrichi il y a un an, j'ai probablement encore quelques impressions. Mais lorsque j'ai exécuté le code que j'ai écrit, j'ai trouvé un problème :

Copier le code
Le code est le suivant :

var ifr = document.createElement('iframe');
ifr.width = 300;
ifr.height = 300;
var idoc = ifr.contentDocument || ifr .contentWindow.document;
idoc.designMode = 'on';
idoc.contentEditable = true
idoc.write('');
document.body.appendChild(ifr); > Jetez un œil au code ci-dessus. Avez-vous trouvé des erreurs ?
Je pense que s’il n’y a pas d’enfants qui ont vécu des expériences similaires aux miennes, ils ne pourront probablement pas voir ce qui ne va pas avec ce code. Alors autant aller courir, peut-être que vous découvrirez bientôt le problème.

Laissez-moi vous révéler la réponse ci-dessous :

Ce code lancera une exception d'objet introuvable. Quel objet est introuvable ? L'objet document est introuvable, quoi ? Comment est-il possible que l'objet document soit introuvable ? Bien entendu, cet objet document est l’objet document de l’iframe. Quiconque a créé du texte enrichi sait que vous devez d'abord obtenir l'objet document de l'iframe avant de le rendre modifiable. Mais pourquoi ne pouvons-nous pas obtenir l'objet document ? Je ne serai pas trop prétentieux ici. Laissez-moi parler de mon processus de solution.

Tout d'abord, je suis allé sur Google et j'ai constaté que la façon dont j'avais obtenu le document était correcte. Ensuite, je me suis demandé si c'était Chrome ? Chrome ne prend-il pas en charge ces deux objets ? Je suis donc passé à Firefox. Le résultat est toujours le même. Alors ce qui est sûr, c'est que cela doit être un problème avec votre propre code.

Plus tard, en comparant le code sur Internet, j'ai trouvé que la position de mon appendChild était un peu fausse, je l'ai donc déplacé en avance pour obtenir l'objet document :




Copier le code
Le code est le suivant :
var ifr = document.createElement('iframe'); >ifr.width = 300;
ifr.hauteur = 300;
document.body.appendChild(ifr);
var idoc = ifr.contentWindow.document; designMode = 'on';
idoc.contentEditable = true
idoc.write('