IE中HTML解析器的问题

Tsu*_*oku 35 javascript html-parsing

我正在尝试创建一个对话框,只有在选择的浏览器是IE(任何版本)时才会出现但是我收到此错误:

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

这一切都在"Line/Char/Code"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>
Run Code Online (Sandbox Code Playgroud)

我注意到,如果我删除"BrowserDetect.browser"和.version它会删除错误,但我需要检查=/...任何想法将被赞赏=).

Kor*_*nel 27

您正在加载文档时修改文档(当浏览器没有"看到"此元素的结束标记时).这会导致解析器中非常棘手的情况,并且在IE中它是不允许的.

IE博客对此有解释.

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


BTW:元素中</不允许使用该字符串<script>.使用<\/这是JS字符串中的安全等价物.


小智 9

我有同样的问题.我的问题是我div在关闭包含之前调用了一个Javascript函数.

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

$(document).ready(function(){
    some_random_javascript_function();
});
Run Code Online (Sandbox Code Playgroud)


Pab*_*lba 7

阅读文档的链接porneL,我发现了一个简单的办法解决这个问题:添加参数"延迟"的剧本,一切工作正常.

<script defer=true>
Run Code Online (Sandbox Code Playgroud)