当页面第一次加载时,我们可以使用window.onload
它来确保在我们做某事之前所有资源都已加载。
我的问题是,如果我们修改 DOM(例如,根据 ajax 请求插入一些 html),当文档再次处于“加载”状态时是否会触发任何事件? (例如,当插入的 html 包含多个图像时)。
(使用 jQuery 的解决方案会很好)。
当页面第一次加载时,我们可以使用window.onload
它来确保在我们做某事之前所有资源都已加载。
我的问题是,如果我们修改 DOM(例如,根据 ajax 请求插入一些 html),当文档再次处于“加载”状态时是否会触发任何事件? (例如,当插入的 html 包含多个图像时)。
(使用 jQuery 的解决方案会很好)。
简短的回答:不。
长答案:如果你知道你在找什么,你可以使用突变观察者(https://developer.mozilla.org/en-US/docs/DOM/MutationObserver)。它仅在新浏览器中支持,并且在某些版本的 chrome 中与闭包一起使用时会出现内存泄漏。
顺便说一句,document.ready 不会告诉您是否所有(或任何..)资源都已加载。它只会告诉你,dom 已准备好(即加载函数,它只会在所有资源(嗯,任何不使用 javascript 请求的资源)都被下载后触发)。
我会说是(我不知道所有浏览器是否都支持。我在 safari 和 chrome 中使用它)
测试用例你可以在这里找到:http: //maakmenietgek.nl/testcases/domready/请注意,我不能让它在小提琴中工作,这就是为什么一个独立的测试用例
index.html 看起来像这样
<!DOCTYPE html>
<head>
<title>Testcase</title>
<script src="jquery-1.8.2.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#clickme').click(function() {
$.get('ajaxdata.html', function(data) {
$('#addhere').html(data);
});
});
})
</script>
</head>
<body>
<p id="clickme">clickme</p>
<div id="addhere">
</div>
</body>
</html>
调用加载的数据$.get
如下所示
<p>added data</p>
<script type="text/javascript">
$(document).ready(function() {
alert('added data');
});
</script>
将 html 添加到 DOM 后会显示警报