Javascript 运行嵌入在AJAX加载元素中的JS时是否等待onload?
假设您通过AJAX加载div的内容。假设它包含各种元素和修改这些元素的JS代码 脚本是否必须等待onload触发,或者在触发后立即开始修改DOM是否安全?下面的例子安全吗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="
<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的代码示例吗?