JS window.onload事件的一些理解

1、window.onload 只会执行一次,同一页面中定义:

  window.onload=funcA;

  window.onload=funcB;

  页面加载完成后,只会执行funcB,后面的会覆盖前面的。

  同样,在使用模板页的情况下,也是如此:内容页的会覆盖模板页中的window.onload所触发的事件。

  如果想要执行多个func ,js 的 解决方法:

    <script>
    if(window.attachEvent)//IE:如果浏览器中存在window.attachEvent函数则使用window.attachEvent函数,判断是否是IE还可以使用:if (document.all){//..}
      window.attachEvent("onload",function() {alert("add method");});
    else  //FireFox...
      window.addEventListener("load",function() {alert("add method");},true);
    </script>

 

2、window.onload 和 jQuery中的$(document).ready()

  window.onload是等到页面完全加载完成才会触发,页面完全下载后,页面中所有的DOM元素都是可以访问的.这种方式有一个很大的优点:不用考虑DOM元素加载的顺序.         

  而$(document).ready()事件,则是在DOM完全就绪时触发,并不要求页面所有DOM元素加载到浏览器.当HTML解析为DOM元素之 后,事件就可以运行了.这种方式优于onload()事件在

    于:$(document).ready()可以在页面没有完全下载时,操作页面的DOM元 素.

 

     举个直观的例子:如果某个页面需要处理很多的图像,我们就可以利用ready()事件来控制图像<image>元素的行为,比如显示隐藏,翻 转图像等等.而如果用widow.onload()事件则需要等页  

     面所有的图像完全下载之后,才可以访问图像元素.而如果需要给图像添加链接,则也是需要 在所有的图像下载完成之后,才可以看出效果了.

 

     所以在这种情况下我们更应该使用$(document).ready()事件了.

 

     但如果想操作图像的高度宽度等属性,则用onload()事件等待图像下载完毕之后,才可以访问图像的第个属性了.

 

     在jQuery中也提供了一等效于onload()的事件的 .load()方法.

 

 

引用:http://blog.csdn.net/chenlei65368/article/details/4544823

     http://blog.csdn.net/yinyaling/article/details/5495779

 

 

posted on 2014-03-18 12:23  Jeacathy  阅读(1980)  评论(0编辑  收藏  举报