Je dois déboguer un éditeur HTML basé sur javascript WYSIWYG qui échoue dans IE8. Il est uniquement conçu pour une utilisation dans IE, ce qui devrait simplifier la solution. Voici le code existant qui échoue:Modification de la fonctionnalité de sélection et de plage dans IE8
function isAllowed() {
var sel
var obj
sel = foo.document.selection
if (sel.type != "Control")
{
obj = sel.createRange().parentElement()
} else {
obj = sel.createRange()(0)
}
if (obj.isContentEditable) {
foo.focus()
return true
} else {
return false
}
}
Essentiellement ce qui se passe est que si vous sélectionnez un texte et cliquez dire le bouton Insérer une image il se dirige d'abord cette isAllowed fonction pour voir si le texte » ve selected est modifiable (c'est-à-dire dans l'iframe ContentEditable).
Cela semble se décomposer dans IE8 à document.selection
ou createRange()
.
Le problème est que lorsque vous ne sélectionnez aucun texte avec votre souris et cliquez quelque part dans la région modifiable, sel.createRange().parentElement()
semble retourner un élément extérieur de l'iframe et il est donc pas contentEditable et la fonction retourne faux. Je me demande si quelqu'un pourrait donner un aperçu de ce qui a changé dans la mise en œuvre des sélections et des plages IE8 qui provoquerait ce comportement?
Hehe, été déconner avec le débogueur IE8 pendant des heures. Je peux voir ce qui se passe et, fondamentalement, si vous n'avez pas sélectionné autre chose que le curseur dans l'iframe quelque part, getParent() sur la 'selection' renvoie un gros morceau de la page globale. C'est comme si c'était ignorer l'iframe. Peut-être que le problème réside dans le iframe (référencé dans le code avec la variable foo). Je vais creuser plus loin. Qui utilise foo dans le code de production !!! vraiment! (Je n'ai pas écrit le code: D) –
J'espère que vous comprendre. Peut-être que ce qui se passe est quand vous avez cliqué seulement son essayer d'obtenir le parent de l'iframe au lieu du contenu dans l'iframe? – qw3n