js的onload


區別一:執行時間不同

  • window.onload()是在頁面所有元素(包括圖片,引用文件)加載完成后再執行。也就是說頁面所有的東西都加載完成之后再加載。

  • $(document).ready()是DOM結構繪制完畢就執行,不必等到加載完畢,意思就是,DOM數加載完畢,不必等到頁面中的圖片或其他外部文件都加載完畢。所以$(document).ready()執行更快

區別二:編寫個數不同

  • window.onload()同時編寫多個,在執行的時候,只會執行最后一個。也就是說只執行一次。
  • $(document).ready()編寫多個,就執行多個

區別三:有無簡寫

  • window.onload()沒有簡寫的方式
  • $(document).ready()簡寫 $(function(){})
<body>
    <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
    <li>10</li>
    </ul>
 </body>
<script>
//只會執行最后一個
window.onload = function(){
  console.log('window.onload加載1');
}
window.onload = function(){
  console.log('window.onload加載2');
}
window.onload = function(){
  console.log('window.onload加載3');
}

//全部都會執行
$(document).ready(function(){
  console.log('$.ready加載1');
})
$(document).ready(function(){
  console.log('$.ready加載2');
})
$(document).ready(function(){
  console.log('$.ready加載3');
})
</script>

image.png

注意:

  1. 如果需要獲取DOM綁定元素的屬性值時,最好使用window.onload,因為他是在所有元素加載完畢才執行,如果使用$(document).ready,DOM已經加載,但是DOM綁定的元素屬性沒有加載,所以屬性不生效。
  2. 要解決這個問題,可以使用 Jquery 中另一個關於頁面加載的方法 ---load() 方法。
  3. Load() 方法會在元素的 onload 事件中綁定一個處理函數。如果處理函數綁定給 window 對象,則會在所有內容 ( 包括窗口、框架、對象和圖像等 ) 加載完畢后觸發,如果處理函數綁定在元素上,則會在元素的內容加載完畢后觸發。
//jQuery代碼
$(window).load(function(){

})
//等價於
window.onload = function(){
}

當 onload 事件觸發時,頁面上所有的DOM,樣式表,腳本,圖片,flash都已經加載完成了。

當 DOMContentLoaded 事件觸發時,僅當DOM加載完成,不包括樣式表,圖片,flash。

我們需要給一些元素的事件綁定處理函數。但問題是,如果那個元素還沒有加載到頁面上,但是綁定事件已經執行完了,是沒有效果的。這兩個事件大致就是用來避免這樣一種情況,將綁定的函數放在這兩個事件的回調中,保證能在頁面的某些元素加載完畢之后再綁定事件的函數。

當然DOMContentLoaded機制更加合理,因為我們可以容忍圖片,flash延遲加載,卻不可以容忍看見內容后頁面不可交互。

在沒有出現DOMContentLoaded事件出現以前,許多類庫中都有模擬這個事件的方法,比如jQuery中著名的 $(document).ready(function(){});


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM