window.onload 事件
本文將結合程式碼例項詳細介紹一下 window.onload 事件的用法。
頁面中很多JavaScript程式碼往往需要對應的文件結構或者內容載入完畢才能執行。
否則可能會出現一些令初學者比較困惑的現象。
首先看一段程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #ant{ width:100px; height:100px; border:2px dotted #ccc; } </style> <script> let oDiv=document.getElementById("ant"); oDiv.style.backgroundColor="#F90"; </script> </head> <body> <div id="ant"></div> </body> </html>
上述程式碼會報錯,谷歌開發者工具控制檯截圖如下:
程式碼分析如下:
(1).程式碼本意是將div的背景顏色設定為 "#F90",但是並未成功,且報錯。
(2).由於順序執行,當執行到 document.getElementById("ant") 時,div 元素並未載入。
(3).獲取 div 元素物件就失敗了,oDiv==null,於是會出現圖片中的錯誤。
可以採用如下三種方式解決上述問題:
(1).JavaScript 程式碼放置於頁面的底部,當執行 JavaScript 程式碼的時候,div 元素自然已經載入解析完畢。
(2).將設定 div 元素的相關程式碼放置於 window.onload 事件處理函式中。
(3).將設定 div元 素的相關程式碼放置於DOMContentLoaded事件處理函式中(後面會有介紹)。
下面採用本文的主角 window.onload 來解決上述問題,程式碼修改如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" content="https://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #ant{ width:100px; height:100px; border:2px dotted #ccc; } </style> <script> window.onload=function(){ let oDiv=document.getElementById("ant"); oDiv.style.backgroundColor="#F90"; } </script> </head> <body> <div id="ant"></div> </body> </html>
上述程式碼執行效果截圖如下:
程式碼成功實現預期效果,此時window.onload事件的功能得以體現。
此事件在文件內容完全載入完畢時觸發,所以將獲取和設定div元素的程式碼放置於window.onload事件處理函式之中,可以確保在設定div背景顏色的時候,div元素已經載入完畢。
事件處理函式繫結:
onload 事件準確的將應該是 load 事件,前面加 "on" 是註冊事件處理函式的一種方式。
關於如何註冊事件處理函式,本文不做介紹,具體參閱JavaScript 註冊事件處理函式一章節。
window.onload事件缺點:
此事件需要在文件內容完全載入完畢後才會觸發,比如需要載入完畢CSS檔案或者圖片等資源。
很多情況下,圖片等資源載入完畢不是必須的,只需要文件結構載入和解析完畢即可。
假設前文設定div元素背景色的需求不變,並且頁面有大量圖片要載入,如果等待圖片完全載入完畢再進行背景色設定,那麼設定操作就稍顯滯後,也不人性化,此種情況下可以利用 DOMContentLoaded 事件實現上述功能。
關於 DOMContentLoaded 可以參閱 JavaScript DOMContentLoaded 事件一章節。
相關文章
- window.onload事件應用程式碼例項事件
- 如何實現為window.onload註冊多個事件處理函式事件函式
- 如果引入的其他js檔案中也存在window.onload事件如何處理JS事件
- JavaScript window.onload簡介JavaScript
- JavaScript:window.onload問題JavaScript
- JS 頁面載入觸發事件 document.ready和window.onload的區別JS事件
- window.onload事件觸發的時候頁面並沒有被瀏覽器渲染事件瀏覽器
- window.onload與$(document).ready()的區別
- $(document).ready和window.onload的區別
- document.ready和window.onload的區別
- JavaScript: window.onload = function() {} 裡面的函式不執行JavaScriptFunction函式
- 菜鳥學JS(五)——window.onload與$(document).ready()JS
- 前端筆試小結之$(document).ready() vs window.onload()前端筆試
- 前端裡那些你不知道的事兒之 【window.onload】前端
- HTML5網頁中iframe與window.onload如何使用詳解HTML網頁
- window.onload()函式和jQuery中的document.ready()區別函式jQuery
- window.onload()函式和jQuery中的document.ready()有什麼區別?函式jQuery
- JS事件(事件冒泡和事件捕獲)JS事件
- 事件 滑鼠事件 表單事件 from表單事件
- javaScript事件(五)事件型別之滑鼠事件JavaScript事件型別
- React 事件和 Dom 事件React事件
- onscroll 事件和onScrollCapture事件事件APT
- 事件協作和事件溯源事件
- 事件流與事件溯源事件
- javaScript事件(一)事件流JavaScript事件
- javaScript事件(三)事件物件JavaScript事件物件
- Solidity事件,等待事件Solid事件
- js--事件流、事件委託、事件階段JS事件
- js 事件冒泡 事件代理 事件捕捉 this指標 bind thisJS事件指標
- JavaScript事件冒泡、事件捕獲和阻止預設事件JavaScript事件
- 事件和事件監聽器事件
- 事件風暴 vs 事件建模事件
- 事件模型和事件委託事件模型
- 事件冒泡 和 事件捕獲事件
- jQuery 事件(二) 表單事件jQuery事件
- Qt 事件傳遞流程-事件處理器|事件分發器|事件過濾器QT事件過濾器
- Javascript事件模型系列(一)事件及事件的三種模型JavaScript事件模型
- 事件系統-z 事件發現事件