window.onload和body onload属性并存时的解决方法

发布时间:2019-10-10编辑:脚本学堂
本文介绍当页面中有window.onload和body中onload属性同时存在时的解决方法,有需要的朋友,可以参考下。

第一种情况,window.onload指定的function是匿名的,则只执行后者,且动作是后者的动作。如:
 

复制代码 代码示例:
<html> 
  <head> 
  <script type="text/javascript"> 
  alert('a'); 
  window.onload=function(){ //  
   alert('b'); 
  } 
  alert('c'); 
  </script> 
  </head> 
  <body onload="alert('d');"> 
  </body> 
   </html> 
 

----显示:acd

第二种情况,window.onload指定的function不是匿名的,则都会执行,前者先于后者。如:
 

复制代码 代码示例:
<html>  
 <head>  
 <script type="text/javascript"> alert('a'); 
 window.onload=fn(); // 后续脚本不执行 function fn(){ 
  alert('b'); 
 } alert('c'); 
  </script>  
 </head>  
  
  <body onload="alert('d');"> 
  </body>  
 </html> 
 

----依次显示:abd
window.onload在<BODY>中

第三种情况,window.onload指定的function是匿名的,则只执行后者,但动作前者是前者的动作。如:
 

复制代码 代码示例:
<html> 
  <head> 
  </head> 
  <body onload="alert('a');"> 
  <script type="text/javascript"> 
  alert('b'); 
  window.onload=function (){  
   alert('c'); 
  } 
  alert('d'); 
  </script> 
  </body> 
 </html> 
 

----依次显示:bdc

第四种情况,window.onload指定的function不是匿名的,则都会执行,前者优于后者。如:
 

复制代码 代码示例:
 <html>  
 <head>  
 </head>  
 <body onload="alert('a');">  
 <script type="text/javascript"> alert('b'); 
 window.onload=fn(); // 后续脚本未执行 alert('c');  
 function fn(){  
 alert('d');  
 } 
  </script>  
 </body>  
 </html> 
 

----依次显示:bda