給window.onload事件賦不同的參數,執行順序不一樣哦!
這幾天敲例子老看到window.onload,有意思的是,每次指派不同,界面執行函數顯示順序不一樣,為什麼呢?
一、現象
例1: 先彈出框——window.onload成了一個普通變量
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
function ShowMessage()
{ alert("true"); }
function AlertMessage()
{ alert("again"); }
window.οnlοad=ShowMessage();
window.οnlοad=AlertMessage();
</script>
</head>
<body> 當你看到true時看不到我 </body>
</html>
當你看到true的彈出框的時候,你肯定沒有看到“當你看到true時看不到我”,說明頁面還沒有載入完就已經開始執行js了。
PS:這樣可以同時加載多個函數,隻是界面出來的晚。
例2 —— 後彈出框——window.onload為事件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Untitled</title>
<script type="text/javascript">
function ShowMessage()
{ alert("true"); }
function AlertMessage()
{alert("again");}
window.οnlοad=function(){ShowMessage();}
window.οnlοad=function(){AlertMessage();}
</script>
</head>
<body> 你看到true時就看到我了 </body>
</html>
當你看到彈出框的時候,你也會看到“你看到彈出框時就看到我了”,這個才是真正的頁面載入完才觸發。但是後一個函數覆寫前一個函數。
PS:該方法使用匿名函數執行,這種形式不可以同時加載多個函數,需要變形:
window.οnlοad=function()
{
ShowMessage();AlertMessage();
}
二、結論
window.onload必須是指派為function類型的時候才能夠在頁面加載完成時被調用,其他情況下,就會覆寫成一個普通的全局變量了。
functionShowMessage()
{ alert("true"); }
window.οnlοad=ShowMessage();
ShowMessage這個方法執行過後的傳回值是undefined,window.οnlοad=ShowMessage();相當于執行:ShowMessage();window.οnlοad=undefined;這兩句。function對象如果隻是指派,不能夠帶括号的,你隻需要:window.οnlοad=ShowMessage;這樣就可以了。帶括号表示先執行function,然後将執行結果指派。