Javascript 运行嵌入在AJAX加载元素中的JS时是否等待onload?

Javascript 运行嵌入在AJAX加载元素中的JS时是否等待onload?,javascript,jquery,ajax,dom,Javascript,Jquery,Ajax,Dom,假设您通过AJAX加载div的内容。假设它包含各种元素和修改这些元素的JS代码 脚本是否必须等待onload触发,或者在触发后立即开始修改DOM是否安全?下面的例子安全吗 <form id="foo">...</form> <script type="text/javascript"> $("#foo").bar(); </script> 。。。 $(“#foo”).bar(); 或者我必须始终执行以下操作: <form id="

假设您通过AJAX加载div的内容。假设它包含各种元素和修改这些元素的JS代码

脚本是否必须等待onload触发,或者在触发后立即开始修改DOM是否安全?下面的例子安全吗

<form id="foo">...</form>
<script type="text/javascript">
    $("#foo").bar();
</script>
。。。
$(“#foo”).bar();
或者我必须始终执行以下操作:

<form id="foo">...</form>
<script type="text/javascript">
    $(function(){
        $("#foo").bar();
    });
</script>
。。。
$(函数(){
$(“#foo”).bar();
});

通常,如果您有一个异步请求,该请求返回包含嵌入式脚本的HTML,并将其添加到DOM中,脚本将不会运行。然而,jQuery在其ajax代码中具有解析并执行这些嵌入脚本的功能

发件人:

可以使用不同的数据处理 通过使用dataType选项实现。 除了纯xml之外,数据类型还可以是 html、json、jsonp、脚本或文本

文本和xml类型返回数据 没有处理。数据很简单 传递给成功处理程序, 通过responseText或 的responseXML属性 XMLHttpRequest对象

注意:我们必须确保MIME web服务器报告的类型 匹配我们选择的数据类型。在里面 特别是,XML必须由 将服务器设置为text/xml或 应用程序/xml实现一致性 结果

如果指定了html,则任何嵌入的 检索到的数据中的JavaScript 在生成HTML之前执行 作为字符串返回。同样地, 脚本将执行JavaScript 从服务器上拉回来的, 然后将脚本本身返回为 文本数据

由于jQuery将首先执行脚本,因此嵌入的脚本代码将在将html添加到dom之前运行。要解决这个问题,您应该返回包装为函数的JavaScript代码:

function doAfterLoad() {
// ...
}
然后在load或ajax方法的成功回调中调用这个函数

('#result').load('ajax/test.html', function() {
  doAfterLoad();
});

当我尝试这一点时,我被(firebug)大喊“doAfterLoad()”不存在。帮助?您可以发布一个将您的问题复制到jsfiddle.net的代码示例吗?