如何最快的加载外部JavaScript文件

    当<script>标签位于html文档流中的时候,位于<script>后面的html会被阻止渲染,必须等到该script加载完以后才会后面的html才会渲染,通过JavaScript动态的生成一个script标签,可以避免上面你的这个问题,因为这个会是外部加载的script的文件位于html文档流以外。因此动态的加载外部的JavaScript文件可以提高页面的渲染速度,提高用户体验。

 

最佳实践

Steve Souders关于外部的JavaScript文件不阻碍html文档的渲染这个问题,在他的书中和博客中公布了集中方法,通过我的思考和实验,我得出了一下三点结论:

1.       创建两个JavaScript文件。第一个JavaScript文件包含动态加载外部JavaScript文件的代码;第二个JavaScript文件包含所有的外部JavaScript代码.

2.       把第一个JavaScript文件放在页面的地步,</body>结束标签的前面。

3.       创建第二个JavaScript标签通过调用函数来加载外部JavaScript文件。

下面可以具体的如何实现:

第一个JavaScript文件要足够的小,一般包含如下的代码:first.js

function loadScript(url, callback){
 
    var script = document.createElement("script")
    script.type = "text/javascript";
 
    if (script.readyState){  //IE
        script.onreadystatechange = function(){
            if (script.readyState == "loaded" ||
                    script.readyState == "complete"){
                script.onreadystatechange = null;
                callback();
            }
        };
    } else {  //Others
        script.onload = function(){
            callback();
        };
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}
然后在我们的页面中可以这样使用
<script type="text/javascript" src="http://your.cdn.com/first.js"></script>
<script type="text/javascript">
loadScript("http://your.cdn.com/second.js", function(){
    //initialization code
});
</script>
 
参考:http://developer.yahoo.com/yui/3/yui/
http://www.nczonline.net/blog/2009/06/23/loading-javascript-without-blocking/



时间: 2024-10-29 21:14:31

如何最快的加载外部JavaScript文件的相关文章

如何动态加载外部Javascript文件_javascript技巧

最近在网上找到了一个可以动态加载js文件的js加载器,具体代码如下:JsLoader.js var MiniSite=new Object(); /** * 判断浏览器 */ MiniSite.Browser={ ie:/msie/.test(window.navigator.userAgent.toLowerCase()), moz:/gecko/.test(window.navigator.userAgent.toLowerCase()), opera:/opera/.test(window

动态加载外部javascript文件的函数代码分享_javascript技巧

复制代码 代码如下: (function (clover) { clover.loadScript = function loadScript(url, callback) { var heads = document.getElementsByTagName('head'); if (heads.length == 0) { alert("page must have one head element"); } var head = heads[0]; var script = do

解决jquery easyui easyloader加载外部js文件失败问题

  easyloader加载外部js文件时,虽然回调函数调用成功,但js文件加载不上,解决方法如下: 找到easyload.js文件,打开如下位置:红色字体部分将script改为this: var _8=document.createElement("script"); _8.type="text/javascript"; _8.language="javascript"; _8.src=_5; _8.onload=_8.onreadystate

jquery动态加载外部js文件代码研究

$.getScript函数动态加载js 有时网页上的js过多就会让网页加载太慢,用户体验不好,我们可以使用jquery $.getScript函数动态加载我们需要的js文件    代码如下 复制代码 $("#load").click(function(){  $.getScript('helloworld.js', function() {     $("#content").html('Javascript is loaded successful!');  })

JS加载器如何动态加载外部js文件_javascript技巧

今天在网上找到了一个可以动态加载js文件的js加载器,具体代码如下: JsLoader.js var MiniSite=new Object(); /** * 判断浏览器 */ MiniSite.Browser={ ie:/msie/.test(window.navigator.userAgent.toLowerCase()), moz:/gecko/.test(window.navigator.userAgent.toLowerCase()), opera:/opera/.test(windo

kettle转换JavaScript加载外部js文件

  日常开发中,时常会出现这样一种情况.有大量的函数是通用的.而每个JavaScript里面写一遍,给维护带来很大的困扰.因而需要将公共的函数写在外部js文件中.这时就需要引入外部的公共文件了.下面是在转换里的JavaScript组件中引入外部公共js文件. //加载js文件 LoadScriptFile(getVariable("Internal.Transformation.Filename.Directory", "") +"/common_Func

js动态加载外部js文件的方法

(function (clover) { clover.loadScript = function loadScript(url, callback) { var heads = document.getElementsByTagName('head'); if (heads.length == 0) { alert("page must have one head element"); } var head = heads[0]; var script = document.crea

Liferay加载自定义css 文件

(1) 对于特别通用的文件,比如是ext-js库要使用到的css文件,你可以有2个选择: 选择1:放在ROOT/html/common/themes/top_head.jsp中: .. <%-- Portal CSS --%> <!--added by charles to load the ext-js css library--> <link href="<%= HtmlUtil.escape(PortalUtil.getStaticResourceURL

快页面加载时间的4种方法

大多数SEO工作者都知道网页加载的时间长短是网站排名的因素之一,越快的加载页面时间对排名越有利.如果一个页面加载缓慢或者超时,会流失多少流量呢?更重要的是,这可能使我们损失一堆客户,以下是页面加载时间对网站流量的一副图. 由此可知加快页面加载时间对我们多么重要,那么,我们该怎样才能加快页面的加载时间呢?这里有4钟技巧有助于优化页面加载时间,确保你的客户不会因为加载页面缓慢而离开你的网站. 1. 使用图像编辑程序和提供保存网页设置 由于图像本身属性比较大,降低图像加载时间就可以显著的降低页面加载时