DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> JavaScript基礎知識 >> 14.7 JavaScript頁面相關事件
14.7 JavaScript頁面相關事件
編輯:JavaScript基礎知識     

之前我們學了各種事件,除了那些事件,還有幾個非常非常重要的頁面相關事件,我們有必要給大家將講解一下。

實現語法如下:

 
window.通用事件名 = 要執行的JavaScript代碼;

在JavaScript中,常用的頁面相關事件共有3種:

  • (1)onload(加載事件);
  • (2)onresize(頁面大小事件);
  • (3)onerror(出錯事件);

一、onload事件

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的值,並用一個變量為其賦值,使它可以被源代碼使用。

二、onresize事件

在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>

當我們改變窗口大小的時候,會彈出以下對話框:

三、onerror事件

在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浏覽器下測試。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved