如果我像这样异步加载脚本
<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完成加载后会触发什么事件?
答案 0 :(得分:2)
每个事件都有自己的通知机制,因此没有通用的答案。例如,您可以阅读有关如何检测动态加载的脚本何时加载here和here的信息。现在,通过使用像YUI或jQuery这样的优秀框架,您可以节省大量时间,因为他们大多数都具有针对这些类型事件的内置跨浏览器支持。
对于DOM完成加载,没有单一的跨浏览器机制可以在加载完成后尽可能早地获取。如果你看一下$(document).ready()的jQuery实现,你会看到几种技术(监听“DOMContentLoaded”事件,setTimeout()最早会触发,监听窗口load(),文档onreadystatechange事件等...)以便跨浏览器支持此功能。
window.onload
事件将保证安全的DOM访问,但它也等待所有图像完成加载,这比必要时间晚得多。这些其他技术用于获得更早的安全访问。