window.onload兼容ie和ff以及多次调用导致相冲突的解决方法

  有的JavaScript脚本必须等待页面加载结束 才能正常执行。

     对于这样的情况有两个解决方法:
  1、将脚本写到html的结束位置。这样只有html全部接在完毕后才会加载执行JavaScript脚本。
  2、将脚本放在任意位置。通过 window.onload来执行脚本。 window.onload的意思是当页面加载完毕的时候执行。

***********************************************************************

  一般使用下面的办法来执行页面加载时所需要调用的函数:

           <!-- 页面加载脚本 -->
        <script type="text/javascript">
            window.onload = function(){
                if(window.document.all){
                    window.attachEvent("onload", windowOnload);
                } else {
                    window.addEventListener("load", windowOnload(), false);
                }
            }
            //页面加载时需要执行的方法
            function windowOnload(){
                alert(2);
            }
        </script>

********************************************************************************

  但是,一般的大型项目中都包含框架,如果框架页面里也调用了window.onload方法,或者body触发了onload事件(即:<body onload="javascript: test();"></body>),然后在框架中的局部页面也需要触发window.onload事件,此时就需要使用下面的办法来避免多次调用window.onload方法导致的冲突问题了:

  先定义一个全局的方法:     

  function addLoadEvent(func){   
    var oldonload=window.onload;  
    if(typeof window.onload!='function'){  
      window.onload=func;  
    }else{  
      window.onload=function(){  
      oldonload();  
      func();  
      }  
    }  
  }  
  接下来,在框架页面和局部页面中,都可以通过这样方式来调用window.onload()方法:
    <!-- 页面加载脚本 -->
  <script type="text/javascript">
    addLoadEvent(windowOnload);   
    function windowOnload(){

      alert(2);

    }

 

  </script>

posted @ 2009-12-11 15:06  弹着钢琴设计  阅读(780)  评论(0编辑  收藏  举报