結合實例詳細介紹javascript中load事件使用方法
baiheng
2016-12-03
9355
JavaScript 中最常用的一個事件就是 load。當頁面完全加載后(包括所有圖像、JavaScript 文件、 CSS 文件等外部資源),就會觸發 window 上面的 load 事件。有兩種定義 onload 事件處理程序的方式。
第一種方式是使用如下所示的 JavaScript 代碼:
EventUtil.addHandler(window, "load", function(event){
alert("Loaded!");
});
? ? ? ?這是通過 JavaScript 來指定事件處理程序的方式,使用了本章前面定義的跨瀏覽器的 EventUtil 對象。與添加其他事件一樣,這里也給事件處理程序傳入了一個 event 對象。這個 event 對象中不包含有關這個事件的任何附加信息,,但在兼容 DOM 的瀏覽器中,event.target 屬性的值會被設置為 document,而 IE 并不會為這個事件設置 srcElement 屬性。 第二種指定 onload 事件處理程序的方式是為
元素添加一個 onload 特性,如下面的例子 所示:
? ? ? ?
? ? ? ?
? ? ? ?
? ? ? ? ? ? ?
Load Event Example
? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ?
? ? ? ?一般來說,在 window 上面發生的任何事件都可以在
元素中通過相應的特性來指定,因為 在 HTML 中無法訪問 window 元素。實際上,這只是為了保證向后兼容的一種權宜之計,但在此南昌網站制作公司百恒網絡開發工程提示大家所有瀏覽器 都能很好地支持這種方式。我們建議讀者盡可能使用 JavaScript 方式。
? ? ? ?圖像上面也可以觸發 load 事件,無論是在 DOM中的圖像元素還是 HTML 中的圖像元素。因此, 可以在 HTML 中為任何圖像指定 onload 事件處理程序,例如:?
? ? ? ?

? ? ? ?這樣,當例子中的圖像加載完畢后就會顯示一個警告框。同樣的功能也可以使用 JavaScript 來實現, 例如:?
? ? ? ?var image = document.getElementById("myImage");
? ? ? ?EventUtil.addHandler(image, "load", function(event){
? ? ? ?event = EventUtil.getEvent(event);
? ? ? ?alert(EventUtil.getTarget(event).src);
? ? ? ?});
? ? ? ?這里,使用 JavaScript 指定了 onload 事件處理程序。同時也傳入了 event 對象,盡管它也不包含 什么有用的信息。不過,事件的目標是
![]()
元素,因此可以通過 src 屬性訪問并顯示該信息。 在創建新的
![]()
元素時,可以為其指定一個事件處理程序,以便圖像加載完畢后給出提示。此時, 最重要的是要在指定 src 屬性之前先指定事件,如下面的例子所示。
? ? ? ?EventUtil.addHandler(window, "load", function(){
? ? ? ?var image = document.createElement("img");
? ? ? ?EventUtil.addHandler(image, "load", function(event){
? ? ? ? ? ? ? event = EventUtil.getEvent(event);
? ? ? ?alert(EventUtil.getTarget(event).src);
? ? ? ?});
? ? ? ? ? ? ? document.body.appendChild(image);
? ? ? ?image.src = "smile.gif";
? ? ? ?});
? ? ? ?在這個例子中,首先為 window 指定了 onload 事件處理程序。原因在于,我們是想向 DOM中添 加一個新元素,所以必須確定頁面已經加載完畢——如果在頁面加載前操作 document.body 會導致錯 誤。然后,創建了一個新的圖像元素,并設置了其 onload 事件處理程序。最后又將這個圖像添加到頁面中,還設置了它的 src 屬性。這里有一點需要格外注意: 新圖像元素不一定要從添加到文檔后才開始下載,只要設置了 src 屬性就會開始下載。 ? ? ? ?
同樣的功能也可以通過使用 DOM0 級的 Image 對象實現。在 DOM 出現之前,開發人員經常使用 Image 對象在客戶端預先加載圖像。可以像使用
元素一樣使用 Image 對象,只不過無法將其添加到 DOM 樹中。下面來看一個例子。
? ? ? ?EventUtil.addHandler(window, "load", function(){
? ? ? ?var image = new Image();
? ? ? ?EventUtil.addHandler(image, "load", function(event){
? ? ? ? ? ? ? alert("Image loaded!");
? ? ? ?});
? ? ? ? ? ? ? image.src = "smile.gif";
? ? ? ?});
? ? ? ?在此,我們使用 Image 構造函數創建了一個新圖像的實例,然后又為它指定了事件處理程序。有的瀏覽器將 Image 對象實現為
元素,但并非所有瀏覽器都如此,所以最好將它們區別對待。還有一些元素也以非標準的方式支持 load 事件。在 IE9+、Firefox、Opera、Chrome和 Safari 3+及 更高版本中,
400-680-9298,0791-88117053
主站蜘蛛池模板:
盐边县|
大兴区|
彭泽县|
天镇县|
嘉黎县|
桐城市|
汉源县|
浙江省|
萍乡市|
偏关县|
崇仁县|
吉木乃县|
大理市|
黄冈市|
兴国县|
乌恰县|
宣城市|
望谟县|
玉屏|
文昌市|
台湾省|
安宁市|
临夏县|
两当县|
株洲市|
龙江县|
福安市|
逊克县|
建德市|
电白县|
临高县|
临猗县|
汉沽区|
醴陵市|
邻水|
杂多县|
尼木县|
长岭县|
岱山县|
顺平县|
康保县|