1. 程式人生 > >windows.onload和body的onload屬性的區別

windows.onload和body的onload屬性的區別

關於windows.onload和body的onload屬性的區別網上有些說法說的也不太統一,現在系統說下:
先看共同點: 都是body內容體載入結束執行;
window.onload 內部方式可以 推薦的
body onload屬性: 內聯或者內嵌方式可以, 內部也可以

首先,這兩個onload事件只能執行一個
在程式中設定一個onload的事件時,第一種:只設置body onload屬性中可以查詢到body元素 ,第二種:只設置window.onload函式中也可以查詢到body元素,這是因為這兩個都是body內容體載入結束執行的
兩者同時設定:只執行body onload屬性的內容; (window.onload在head頭部中出現的情況),另外,還有如果window.onload出現在body onload屬性的後面的情況.無論順序則麼樣,除了onload事件的程式碼,都是按照順序來進行的,等載入完body的頁面,再執行onload事件,後面onload事件是可以覆蓋前面的onload事件的.具體看程式碼:
---------------------

<!DOCTYPE html>
<html>   

<head>   
    <script type="text/javascript"> 
       alert('a');
       window.onload=function () {  
       alert('b');  
         } ;
       alert('c');
   </script> 
   </head>   
   <body onload="alert('d');">  

   </body>   

</html> 

執行結果是:a c d
ac先會alert出來沒有疑問,對於bd,就是誰在下面就會執行誰,這是因為html標籤的載入順序是除onload之外從上向下載入,然後會按從上向下的順序載入onload事件,所以下面的onload會把上面的onload事件給覆蓋掉.(使用谷歌瀏覽器)
再看另外一個程式碼:

<!DOCTYPE html>
<html>   

<head>   

   </head>   
   <body onload="alert('d');">  

   </body>   
     <script type="text/javascript"> 
       alert(
'a'); window.onload=function () { alert('b'); } ; alert('c'); </script> </html>

按照上面的解釋,執行結果是acb,和執行的結果是一致的.