异步资源加载完成后会触发哪些Javascript事件?

时间:2011-09-29 04:11:36

标签: javascript

如果我像这样异步加载脚本

<script type="text/javascript">
    (function () {
        var js = document.createElement('script');
        js.type = 'text/javascript';
        js.async = true;
        js.src = '<%=BundleTable.ResolveUrl("~/js") %>';
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(js, s);
    })();
</script>

异步内容完成加载并且dom完成加载后会触发什么事件?

1 个答案:

答案 0 :(得分:2)

每个事件都有自己的通知机制,因此没有通用的答案。例如,您可以阅读有关如何检测动态加载的脚本何时加载herehere的信息。现在,通过使用像YUI或jQuery这样的优秀框架,您可以节省大量时间,因为他们大多数都具有针对这些类型事件的内置跨浏览器支持。

对于DOM完成加载,没有单一的跨浏览器机制可以在加载完成后尽可能早地获取。如果你看一下$(document).ready()的jQuery实现,你会看到几种技术(监听“DOMContentLoaded”事件,setTimeout()最早会触发,监听窗口load(),文档onreadystatechange事件等...)以便跨浏览器支持此功能。

window.onload事件将保证安全的DOM访问,但它也等待所有图像完成加载,这比必要时间晚得多。这些其他技术用于获得更早的安全访问。