是否有任何方法来延迟加载第三方JavaScript文件,直到页面的其余部分完成加载?延迟加载第三方javascript
回答
您可以附加到页面的onload事件,一旦触发,您可以动态地插入对文件的引用。
例如:
function loaded(){
var el = document.createElement("script");
el.src = "somefile.js";
el.type="text/javascript";
document.getElementsByTagName("head")[0].appendChild(el);
}
一个简单的方法是将它们加载到html页面的末尾。
如果你想确保像图片这样的内容先载入,加上一堆跨浏览器的问题,平滑启动,jQuery库使$(window).load()
和$.getScript()
这很容易。
$(window).load(function() {
$.getScript('your_3rd_party-script.js');
});
jQuery不是所有问题的答案,但它提供了一些很好的抽象。例如,您将获得自动IE缓存清除(如果您需要),并且不必担心直接DOM操作方法的浏览器特定问题。
我必须为我自己的网站做到这一点,我在这里记录的是:
http://tech.bluesmoon.info/2010/01/handling-documentwrite-in-dynamic.html
总结一下,有以下几种类型的第三方脚本来处理:
那些与页面很好地玩,或者根本不操纵DOM,创建或自己的DOM节点,或者让你传入一个DOM节点的ID,在这个DOM节点中它的所有内容都会去,并等到DOM节点出现在DOM中。
您不必担心这些脚本。您可以安全地异步加载它们,或者在onload或DOMContentReady事件触发后加载它们。我个人更喜欢异步加载它们。
那些使用
document.write
添加内容到页面。这些脚本很烦人,但是您通过将document.write
别名为innerHTML
附加到特定DIV的属性来处理它们。我的文章谈到这一点。这些绝对必须在onload之前在页面上触发,通常是测量onload启动所用时间的脚本。系统会要求您使用常规脚本节点加载这些脚本,但是,请考虑一个衡量onload的脚本实际上并不会延迟onload。出于这个原因,我会说异步加载这样的脚本,但将异步加载器放在页面顶部(在HEAD)部分。这使它有机会在加载火灾之前加载。
另外,还要注意一个警告,异步添加脚本仍然可以阻止onload事件,如果他们加入到之前的onload发射的DOM,但他们不会阻止加载任何其他内容。
是,jQuery有一个准备的方法来处理这样的:http://www.learningjquery.com/2006/09/introducing-document-ready
- 1. 角2 CLI - 第三方插件JS延迟加载
- 2. 如何延迟第三方统计javascripts
- 3. Javascript延迟图像加载
- 4. 延迟加载
- 5. 延迟加载
- 6. 延迟加载
- 7. 加载第二个函数的延迟
- 8. 的jquery - 延迟加载 - 设置延迟
- 9. 延迟加载3.2.6
- 10. nhibernate延迟加载
- 11. 延迟加载MirrorType
- 12. RecyclerView延迟加载
- 13. 延迟加载DLL
- 14. Firebase延迟加载
- 15. UIwebview延迟加载
- 16. 延迟加载CollectionViewSource?
- 17. Laravel延迟加载
- 18. Firebase延迟加载
- 19. gwt延迟加载
- 20. 延迟加载XmlDocument
- 21. 延迟加载MEF?
- 22. ASP MVC针对JavaScript的延迟加载
- 23. Javascript/Silverlight代理双加载延迟
- 24. Javascript延迟加载空白页
- 25. 的Javascript文本文件加载延迟
- 26. NPAPI加载第三方DLL
- 27. 隐式延迟加载vs显式延迟加载
- 28. 延迟之前卸载Javascript
- 29. 如何以RESTful方式“延迟加载”?
- 30. 延迟js加载的最佳方法?
+1“jQuery不是所有问题的答案......” – TheHippo 2010-07-24 11:30:10