繁体   English   中英

修改DOM后window.onload等效?

[英]window.onload equivalent after modifying the DOM?

首次加载页面时,我们可以使用window.onload确保在执行某些操作之前已加载所有资源。

我的问题是, 如果我们修改DOM(例如,根据ajax请求插入一些html),当文档再次处于“已加载”状态时,是否会触发任何事件? (例如,当插入的html包含多个图像时)。

(用jQuery解决方案会很好)。

简短的回答:没有。

答案很长:如果你知道你在寻找什么,你可以使用变异观察者( https://developer.mozilla.org/en-US/docs/DOM/MutationObserver )。 它只支持新的浏览器,并且在某些版本的chrome中,当与闭包一起使用时会出现内存泄漏。

BTW,document.ready不会告诉您是否所有(或任何......)资源都已加载。 它只告诉你,dom已准备就绪(这是加载功能,只会在所有资源(以及使用javascript未请求的任何资源)下载后才会启动)。

你可以使用.done()

描述:添加要在解析Deferred对象时调用的处理程序。

还有jQuery插件See Here

我会说YES(我不知道是否所有浏览器都支持它。我在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后会显示警报

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM