35 votes

Problème d'analyseur HTML dans IE

J'essaie de créer une boîte de dialogue qui n'apparaîtra que si le navigateur sélectionné est IE (n'importe quelle version), mais j'obtiens cette erreur :

Message : Erreur d'analyse HTML : Impossible de modifier l'élément conteneur parent avant la fermeture de l'élément enfant (KB927917)

Tout cela est dans "Line/Char/Code" 0 donc je ne sais pas où est l'erreur. Le code que j'utilise est le suivant :

 <script type="text/javascript"> 
  <!--  
  if(BrowserDetect.browser.contains("Explorer"))
  {     
    var Nachricht = 'Hemos detectado que está utilizando ' + BrowserDetect.browser + ' ' +
  BrowserDetect.version + '. Puede que algunas funciones no estén habilitadas. <p></p> Si desea experimentar todo el potencial del portal, por favor intente desde otro navegador (browser). <p></p>Gracias
 showDialog('¡Aviso Importante!',Nachricht,'warning',10);
 } 
 </script>

J'ai remarqué que si je supprime "BrowserDetect.browser" et .version, l'erreur disparaît, mais j'en ai besoin pour vérifier =/... toute idée sera appréciée =).

2voto

La meilleure façon d'aborder les IE seulement sont commentaires conditionnels . Vous n'avez même pas besoin d'utiliser JavaScript. Voir par exemple http://www.positioniseverything.net/articles/ie7-dehacker.html .

0voto

rob Points 2440

Peut-être un peu tard, mais cette erreur apparaît également si vous utilisez SWFObject et avez 2 divs avec le même id.

J'avais des divs en double, [avec id="flashcontent", grâce au copier-coller].

Résolu en renommant les divs avec des ids uniques.

0voto

David Points 100

Le javascript fonctionne très facilement avec navigator.appName. (voir http://de.selfhtml.org/javascript/objekte/navigator.htm ) Vous pouvez créer un if-query avec ceci. Très facile, essayez-le !

0voto

Apeli Points 96

Une version actuelle de https://apis.google.com/js/plusone.js a provoqué ce bug sur IE8 dans un de mes sites.

La solution la plus simple : supprimer Google+.

Solution facile : intégrez le code dans la fonction document.ready de Jquery ou une fonction similaire :

$(document).ready(function(){
     var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
     po.src = 'https://apis.google.com/js/plusone.js';
     var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
});

-1voto

Constantin Points 1

http://support.microsoft.com/kb/927917

Il y a quelques exemples.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X