我有一个从表格


 < SCRIPT src =“...”type =“text / javascript”的AJAX调用返回的HTML片段“>< / SCRIPT>
< SCRIPT type =”text / javascript“>
 function showForumGrid()
 {...};
函数f()
 {...}
< / SCRIPT>
< DIV id =“div1”>
 ...
 < IMG id =“dummyBody”src =“...”onload =“showForumGrid()”>
< / DIV>


& #xA; 在AJAX调用处理程序中,我正在执行以下操作


 var x = document.getElementById(snippet_container_id);
&# xA; // $(x).html(ajaxData);

 var domFragment = $ .parseHTML($ .trim(ajaxData),document,true);
 $(x)。空();
 $(x)的.prepend(domFragment); 



 这在Chrome中工作正常但在Firefox中我收到错误ReferenceError:showForumGrid未定义
&#xA ;答案 0 :(得分:2)
这是因为当您在文档中附加<script>
节点时,在解析文档之后,它们不会像以前一样被视为同步。
(甚至设置async
attribute不起作用)。
这是一个简化的例子:
var external = document.createElement('script');
var inner = external.cloneNode();
external.src = 'data:application/javascript,console.log("external")';
inner.innerHTML = 'console.log("inner")';
document.head.appendChild(external);
document.head.appendChild(inner);
&#13;
不确定除了等待外部load
的{{1}}事件(IE9 + browsers),还是设置循环检查{{1}定义(如果你需要支持旧浏览器)。
<script>
&#13;