之前我們學了各種事件,除了那些事件,還有幾個非常非常重要的頁面相關事件,我們有必要給大家將講解一下。
實現語法如下:
window.通用事件名 = 要執行的JavaScript代碼;
在JavaScript中,常用的頁面相關事件共有3種:
onload事件表示在文檔加載完畢再執行的事件。
語法:
window.onload=function(){ …… }
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> var e = document.getElementById("btn"); e.onclick = function () { alert("JavaScript"); } </script> </head> <body> <input id="btn" type="button" value="提交" /> </body> </html>
在浏覽器預覽效果如下:
分析:
在CSS入門教程中的HTML文檔流這一節我們知道,HTML文檔是從上到下解析的。
當我們點擊“提交”按鈕的時候,浏覽器會報錯,這是因為默認情況下浏覽器對一個頁面是從上到下進行解析的,當浏覽器解析到“var e = document.getElementById("btn");”就會感覺很疑惑,怎麼半路殺出個程咬金呢?然後頓時崩潰了,~~(>_<)~~
正確的JavaScript實現代碼應該如下:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> window.onload = function () { var e = document.getElementById("btn"); e.onclick = function () { alert("JavaScript"); } } </script> </head> <body> <div id="main"> <input id="btn" type="button" value="提交" /> </div> </body> </html>
浏覽器從上到下解析到window.onload時,就會先不解析window.onload裡面的代碼,而是繼續往下解析,直到把整個HTML文檔解析完成再去解析window.onload內部的代碼。這時不需要程咬金自己報號,人家都知道他來了。
注意,window.onload在“在線代碼測試工具”中無效,大家看到沒有效果不要驚慌。請大家在本地編輯器自行測試。
還有人就問了,像下面JavaScript這種函數為什麼就不需要加window.onload都正確呢?
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> function change() { var e = document.getElementById("lvye"); e.style.color = "red"; e.style.border = "1px solid gray"; } </script> </head> <body> <h1 id="lvye"> 學習網</h1> <input type="button" value="改變樣式" onclick="change()"/> </body> </html>
我們知道函數必須調用才會生效,函數的定義本身不會自己執行。雖然浏覽器從上到下解析頁面代碼,但是碰到函數的定義,它不會立刻解析。假如浏覽器立刻解析的話,函數豈不是自動執行了,那這還是函數麼?
當文檔載入時產生就會產生onload事件,onload事件一個很重要的作用就是在首次載入文檔時檢測cookie的值,並用一個變量為其賦值,使它可以被源代碼使用。
在JavaScript中,對於頁面大小改變的事件我們用的是onresize。這個事件常用於固定浏覽器的大小。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> window.onresize = function () { alert("窗口大小被改變"); } </script> </head> <body> </body> </html>
當我們改變窗口大小的時候,會彈出以下對話框:
在JavaScript中,當文檔或圖像加載過程中發生錯誤時就會觸發onerror事件。onerror事件只有在IE浏覽器下才有效。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <img src="logo.jpg" onerror="alert('圖片沒有加載成功!')"/> </body> </html>
在浏覽器預覽效果如下:
分析:
由於根據src找不到圖片,圖片加載失敗,因此觸發了onerror事件。請在IE浏覽器下測試。