今天在开发的时候,发现很多页面的信息都没有显示出来,仔细观察了之后,发现都是onload的js函数没有执行的原因。
发现最近Google的统计代码加载很慢,经常在浏览器状态栏里看到Google的统计代码链接在运行,而就在这个过程,导致网页被k住了。我细心观察了下,不但是Google的分析程序,还有Google AdSense的链接、百度联盟的链接等第三方js代码都时不时出现这个问题,就是被k住了不能加载联盟广告,继而网页也不能继续加载其他的东西,包括onload的js函数的执行。
受这个启示,我首先把Google的统计分析代码去掉,然后打开网页,看看是否可以执行onload的js函数;如果不行,再把AdSense的联盟广告代码去掉,然后测试显示效果;如果还不行,就再把百度联盟广告的代码去掉,看是否解决问题。一般情况下,经过这三个步骤,onload的js函数不 能执行的问题就可以解决了。
实际上,在遇到这个问题是,我们只需注意一下状态栏里哪个地址的执行最久,哪个地址就是祸根了,把它去掉即可。如果是站内图片,则需要优化一下了,找出其加载慢的原因从而解决问题。
JQuery的$(window).load()与OnLoad事件比较
JQuery的(document).ready()方法,这个方法只是在页面所有的DOM加载完毕后就会触发,无疑很大的加快了网页的速度。
但是对于一些特殊应用,比如图片的放大缩小,图片的剪裁。需要网页所有的内容加载完毕后才执行的呢?我推荐使用$(window).load()方法,这个方法会等到页面所有内容加载完毕后才会触发,并且同时又没有OnLoad事件的弊端。
$(window).load(function() {
console.log("hello");
});
$(window).load(function() {
console.log("hello again");
});
上面的代码会在页面所有内容加载完成后按先后顺序依次执行。
当然不要忘了与之对应的Unload方法:
$(window).unload(function() {
console.log("good bye");
});
上面代码会在页面关闭时引发。