异步载入javascript方法避免长时间的js等待完成

时间: 2010-07-21 / 分类: 技术相关 / 浏览次数: 3,512 views / 3个评论 发表评论

[文章作者:叶歆昊   最后修改:2010-07-21   转载请注明原文链接:http://littz.com/asynchronous-javascript.html]

早几天写了个转换程序从Discuz!X!门户转换到WordPress换用WPSummer高级主题后,发现该主题支持Addthis的收藏&分享功能,非常好用。

但JS有个特点,如果有任何一个JS没有加载完成,页面始终会显示等待加载完成。Addthis使用的地址是GoogleCode SVN的地址http://china-addthis.googlecode.com/svn/trunk/addthis.js,该地址容易被墙,没有墙的时候也速度不大快。所以决定把这部分JS修改成异步载入方式。

single.php中原代码如下:

<script type="text/javascript" src="http://china-addthis.googlecode.com/svn/trunk/addthis.js" charset="UTF-8"></script>

参考Google Analytics代码,修改成:

<script type="text/javascript" charset="utf-8">
	(function() {
		var asyncjs = document.createElement('script');
			asyncjs.type = 'text/javascript';
			asyncjs.async = true;
			asyncjs.charset = "utf-8";
			asyncjs.src = 'http://china-addthis.googlecode.com/svn/trunk/addthis.js';
		var asynclo = document.getElementsByTagName('script')[0];
			asynclo.parentNode.insertBefore(asyncjs, asynclo);
	})();
</script>

修改之后,该JS会在其他JS完成的时候才加载,同时该异步加载方式不计入浏览器的等待进度条中,一定程度上加快访问速度的视觉效果。

3个评论

  1. xiongkang
    2010/07/21 于 22:13:47

    围观耗子!

  2. Jessie Crespo
    2010/10/17 于 18:59:33

    Interesting post, thanks! Could you tell me about the third paragraph in more detail?

  3. BLW
    2012/04/29 于 11:23:32

    这样的方法不错 我试用了下 在HTTP请求中已经看不到这条 但实际能使用ADDTHIS
    有个问题 IE浏览器每次都提示有错误 可以再优化下么?
    我现在在用的是 参照ADDTHIS官方关于异步加载的设定

发表评论

您的昵称 *

您的邮箱 * (绝对保密)

您的网站