1, window.onload 是窗口(頁面)加載事件,當文檔內容完全加載完成會觸發該事件(包括圖像,腳本文件,css文件等),就調用的處理函數
下面的代碼,當點擊按鈕,並不會彈出對話框,因為頁面還沒有加載到按鈕元素,無法執行 js 點擊事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script> var btn=document.querySelector("button"); btn.onclick=function(){ alert("點擊了"); } </script> </head> <body> <button>點擊</button> </body> </html>
處理辦法是:
window.onload = function() { var btn = document.querySelector('button'); btn.addEventListener('click', function() { alert('點擊我'); }) }
2,window.onload傳統注冊事件方式,只能寫一次,如果有多個,會以最后一個window.onload為准
下面的代碼,頁面一加載,就會彈出“22", 然后再點擊按鈕,不能執行點擊事件,無法彈出”點擊我“
window.onload = function() { var btn = document.querySelector('button'); btn.addEventListener('click', function() { alert('點擊我'); }) } window.onload = function() { alert(22); }
解決方法:如果使用addEventListener 則沒有限制
window.addEventListener('load' ,function(){ var btn=document.querySelector("button"); btn.onclick=function(){ alert("點擊"); } }) window.addEventListener('load' , function(){ alert("22"); })
頁面一加載,彈出”22“后,再點擊按鈕,又會彈出”點擊“。
3,窗口加載事件:document.addEventListener( ' DOMContentLoaded ' , function(){})
DOMContentLoaded事件觸發時,僅當DOM加載完成,不包括樣式表,圖片,flash等等。(IE9以上才支持)
如果頁面的圖片很多的話,從用戶訪問到 onload觸發可能需要較長的時間,交互效果就不能實現,必然影響用戶體驗,此時用DOMContentLoaded事件比較合適。
