在IE浏览器中的HTML分析器问题

我试图创build一个对话框,只有当浏览器selectIE浏览器(任何版本)才会出现,但我得到这个错误:

消息:HTML分析错误:无法在子元素closures之前修改父容器元素(KB927917)

这一切都在“行/字符/代码”0,所以我不知道错误在哪里。 我使用的代码是这样的:

<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> 

我注意到,如果我删除了“BrowserDetect.browser”和.version它删除错误,但我需要那些检查= / …任何想法将不胜感激=)。

您正在加载文档(当浏览器没有“看到”此元素的结束标记时)。 这在parsing器中造成非常棘手的情况,在IE中它是不允许的。

IE博客对此有解释。

解决方法是修改文档中较早的另一个元素,并且已经完全加载(浏览器已经看到它的结束标记)。

顺便说一句:在<script>元素中不允许使用string</ <script> 。 在JSstring中使用<\/安全等效。

我有这个相同的问题。 我的问题是,在包含div被closures之前,我正在调用一个Javascript函数。

为了解决这个问题,我在jQuery ready事件处理程序中调用了Javascript函数:

 $(document).ready(function(){ some_random_javascript_function(); }); 

阅读由porneL链接的文档,我发现这个问题的一个简单的解决方法:添加一个参数'延迟'的脚本,一切正常。

 <script defer=true> 

像Sergey Kirienko说:使用条件注释。 下面的代码将只能由Internet Explorer执行。 微软在这个页面上有很好的信息。

 <!--[if IE]> <script type="text/javascript"> showDialog('¡Aviso Importante!','message','warning',10); </script> <![endif]--> 

如果你想要一个特定的版本,你也可以testing:

 <!--[if lte IE 7]> <script type="text/javascript"> showDialog('¡Aviso Importante!','Your are using a too old version of Internet explorer. Please upgrade','warning',10); </script> <![endif]--> 

浏览器嗅探是一个可能的时候应该避免的混乱。 最好是嗅探你想使用的function 。 假设你想使用document.evaluate()来执行一个XPathexpression式,但是你不知道它是否被支持。 而不是嗅探支持的浏览器,这样做:

 if (document.evaluate) { // go ahead and use it } else { // browser doesn't support it; do something else } 

只处理IE的最好方法是有条件的评论 。 你甚至不需要使用JavaScript。 看例如http://www.positioniseverything.net/articles/ie7-dehacker.html

也许有点晚,但如果您使用SWFObject并具有相同的ID 2个div,这个错误也会popup。

我有重复的div,[与id =“flashcontent”,感谢复制和粘贴]。

通过用独特的ID重命名div来解决。

javascript的工作非常容易与navigator.appName。 (见http://de.selfhtml.org/javascript/objekte/navigator.htm )你可以用这个来创build一个if查询。 非常简单,只需尝试一下!

当前版本的https://apis.google.com/js/plusone.js在我的一个网站中导致了IE8上的这个错误。;

最简单的解决scheme – 删除谷歌+。

简单的解决scheme – 包装在jquery的document.readyfunction或类似的代码:

 $(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); });