javascript - Chrome 浏览器是否破坏了动态脚本加载?

标签 javascript google-chrome dynamic load

这不是我的代码,我只是在解决问题。一些已经运行了一年多的代码现在已经停止在 Chrome (12.0.742.122) 中运行,但在其他“大型”浏览器(包括 WebKit 同胞 Safari (5.0.5))中运行。 “不再工作”是指虽然脚本文件确实加载了,但它不会执行。将脚本加载到 innerHTML 或将其写入 div 时您期望的行为类型,但两者都没有完成。下面被注释掉的行都是让它工作的失败尝试,其中第一个是直到最近才有效的原始代码。

<div id="abc"></div>
<script type="text/javascript">
var d=document.getElementById("abc");
var s=document.createElement('SCRIPT');
if(s){s.src=script_path;}
//if(d)d.appendChild(s);        //original line that still works in all other browsers
//if(d)d.parentNode.appendChild(s);
//if(d)d.parentNode.insertBefore(s,d);
//if(d)d.parentNode.insertBefore(s,d.nextSibling);
document.body.appendChild(s);   //this works, script executes
</script>

上面这段代码的目的是脚本是 div 的子元素。大概他们希望能够删除那个 child 并同时删除所有脚本(我不确定他们的动机)。

最佳答案

我发现了问题所在,这在很大程度上要感谢 Martin Bieder 的来回介绍,并用他的工作示例向我介绍了 jsfiddle.net。

问题实际上是测试页,您认为他们在创建测试页时犯了一个相当无害的错误。 div 和所有代码将在下面简单地表示为######,因为它甚至与问题无关。这实际上是一个 HTML 问题。如果您没有正确匹配结束标签,Chrome 12 会不高兴。我真的不敢相信它会对脚本文件的执行产生影响,但确实如此。在过去的 10 分钟里,我尝试了很多次 HTML 标签的正确与错误,令人难以置信的是这确实是问题所在。

<font><center><b>
##########
</b></font></center>

您会看到字体和中心结束标签的错误方式,这足以让 Chrome 感到困惑,以至于它不会执行添加到这些标签中的任何动态脚本。离奇。我无法在 jsfiddle 上重新创建它,这可能是由于网站的性质运行您放入其中的 html/js(例如使用 onload)。

关于javascript - Chrome 浏览器是否破坏了动态脚本加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6761190/

相关文章:

javascript - 在 Google Chrome 上使用 jQuery 加载窗口比 DOM 先加载

java - 为什么 x 被视为对象(即使它引用数组)也是一个错误?

c - 尝试从c中的文件中的单词(文本)中进行动态内存分配

javascript - Alert() 有效,而 elem.classList.add() 不会在 li 元素处添加类

javascript - 如何将 $http 获取响应存储在可从外部 $http 函数(Angularjs)访问的变量中?

android - Android/iOS 应用程序内浏览器上的证书固定

Android 动态添加联系人表单

javascript - 使用 Jquery 进行动画(条形随着时间的推移而填满)(建议)

javascript - 如何在运行时从另一个列表填充选择列表?

html - Google 表格单元格的 HTML 元素是什么?