在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); });