Je construis un éditeur WYSIWYG avec un iframe modifiable à l'aide p> document.execCommand () code>. Maintenant, je dois utiliser le
"insertHTML" commande code> qui fonctionne parfaitement dans Chrome et Firefox, mais bien sûr, il ne fonctionne pas dans Internet Explorer:
<div contenteditable id="target">contenteditable</div>
<button onclick="run()">contenteditable.focus() + document.execCommand("insertHTML", false, "<b>ins</b>")</button>
4 Réponses :
dans IE <= 10 Vous pouvez utiliser la méthode update strong> p> dans IE 11, pastéhtml code> du
Textrange code> représentant la sélection:
document.selection.selection code> est parti et
INSERTHTML code> n'est toujours pas pris en charge, vous aurez donc besoin de quelque chose comme ce qui suit : P>
Ie semble ajouter le texte au haut de la page. Une idée de la raison pour laquelle il n'est pas placé dans l'iframe spécifié par Var Doc?
@Tundoopani: Pas sans plus de contexte. Avez-vous un exemple de page?
J'ai codé une version simple ici: jsfiddle.net/mwz7a/3 . Dans IE9, le contenu n'est pas placé dans l'éditeur iFrame.
Si vous n'avez encore rien trouvé encore, P>
J'ai eu un bouton qui ajouterait HTML dans un iframe et causait une erreur dans IE8 lorsque j'ai cliqué sur le bouton et aucun texte n'a été sélectionné (c'est-à-dire quand j'avais le caret clignotant). Il s'est avéré que le bouton lui-même a été sélectionné (malgré la non sélectionnable = "ON"), et que JavaScript vomit l'erreur. Lorsque j'ai changé le bouton sur une DIV (avec non sélectionnable), cela fonctionnait bien, dans IE8 et FF. P>
J'espère que cela aide. P>
var doc = document.getElementById("your_iframe").contentWindow.document; // IE <= 10 if (document.selection){ var range = doc.selection.createRange(); range.pasteHTML("<b>Some bold text</b>"); // IE 11 && Firefox, Opera ..... }else if(document.getSelection){ var range = doc.getSelection().getRangeAt(0); var nnode = doc.createElement("b"); range.surroundContents(nnode); nnode.innerHTML = "Some bold text"; };
Méthode pashtml code> n'existe pas sur la plage code> objet code> dans mon IE9
Pour ceux qui ont le même problème, le @David Réponse est le seul qui a fonctionné pour moi.
Je sais que c'est extrêmement vieux, mais comme c'est-à-dire que c'est-à-dire un problème, voici un meilleur moyen qui n'utilise même pas Il manque des chèques, comme vous garantissant " Re dans le conteneur droit pour ajouter une image. P> exécuteur code>.
var sel = window.getSelection();
var range = sel.getRangeAt(0);
var frag = document.createDocumentFragment();
var img = document.createElement("img");
// add image properties here
frag.appendChild(img);
range.insertNode(frag);
Même ce problème étant vieux, cette réponse est la seule qui a fonctionné pour moi. Merci en partageant vos connaissances.
@DExiang L'option facile est de ne pas se soucier de IE8 et ci-dessous. :)
CES Rapports de bogues implique que EDGE prend en charge EXECCOMMAND (" INSERTHTML ", ..) bizarre).