window.onload用法詳解

網頁中的javaScript腳本代碼每每須要在文檔加載完成後纔可以去執行,不然可能致使沒法獲取對象的狀況,爲了不這種狀況的發生,可使用如下兩種方式:
一.將腳本代碼放在網頁的底端,這樣在運行腳本代碼的時候,能夠確保要操做的對象已經加載完成。
二.經過window.onload來執行腳本代碼。
第一種方式感受比較凌亂(其實推薦使用),每每咱們須要將腳本代碼放在一個更爲合適的地方,那麼window.onload方式就是一個良好的選擇。window.onload是一個事件,當文檔加載完成以後就會觸發該事件,能夠爲此事件註冊事件處理函數,並將要執行的腳本代碼放在事件處理函數中,因而就能夠避免獲取不到對象的狀況。先看一段代碼實例:javascript

<!DOCTYPE html>   
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />
<title>window.onload用法-螞蟻部落</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
document.getElementById("bg").style.backgroundColor="#F90";
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>


以上代碼的初衷是向將div的背景顏色設置爲#F90,可是並無實現此效果,這是由於代碼是順序執行的,當執行到document.getElementById("#bg").style.backgroundColor="#F90"這一句的時候,尚未加載到此div對象,因此設置也就不可以成功。代碼修改以下:

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />
<title>位置高度div垂直居中-螞蟻部落</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
window.onload=function(){
 document.getElementById("bg").style.backgroundColor="#F90";
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

以上代碼實現了將div背景顏色設置爲#F90的目的。緣由就是講設置背景顏色的代碼放置在window.onload的事件處理函數中,只有當文檔加載完成後,纔會執行事件處理函數,也纔會執行設置背景顏色的腳本代碼。
事件處理函數綁定:
方式一:
window.onload=function(){},在以上代碼中就是使用此種方式爲window.onload事件綁定事件處理函數,這裏綁定的是一個匿名函數,固然也能夠綁定非匿名函數,代碼實例以下:

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />
<title>window.onload用法詳解-螞蟻部落</title>
<script type="text/javascript">
window. myalert()
{
 alert("綁定成功!");
}
</script>
</head>
<body>

</body>
</html>

以上代碼能夠將爲名myalert方法綁定到window.onload事件上,可是不能以如下方式爲此事件綁定多個事件處理函數:

window. a(){}
window. b(){}

以上代碼並不能爲window.onload事件綁定多個事件處理函數,而是最後一個會覆蓋前面的全部函數。不過代碼能夠變通一下:
<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />
<title>window.onload用法-螞蟻部落</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
window.onload=function(){
 function a(){
   document.getElementById("bg").style.backgroundColor="#F90";
 }
 function b(){
   document.getElementById("bg").style.width="200px";
 }
 a();
 b();
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

以上代碼實現了綁定多個事件處理函數一樣的效果。
方式二:
可使用addEventListener()和attachEvent()爲onload事件綁定事件處理函數,下面分別介紹一下:
addEventListener()是當前標準的一種事件處理函數綁定方式,可是IE8和IE8如下的瀏覽器並不支持此方式,實例以下:

<!DOCTYPE html>  
<html>  
<head>  
<meta charset=" utf-8">  
<meta name="author" content="http://www.softwhy.com/" />
<title>window.onload用法-螞蟻部落</title>
<style type="text/css">
#bg{
 width:100px;
 height:100px;
 border:2px solid red;
}
</style>
<script type="text/javascript">
window.addEventListener("load",bg,false);
window.addEventListener("load",changeW,false);
function bg(){
 document.getElementById("bg").style.backgroundColor="#F90";
}
function changeW(){
 document.getElementById("bg").style.width="200px";
}
</script>
</head>
<body>
 <div id="bg"></div>
</body>
</html>

以上代碼能夠爲window.onload事件綁定多個事件處理函數。簡單介紹一下語法格式:
addEventListener("type",函數名,false)addEventListener()函數具備三個參數,第一個參數事件類型,須要注意的是,事件類型名稱前面不能有on,例如window.onload事件,在這個地方只能寫做load,第二個參數是要綁定的函數名稱,第三個參數通常爲false。使用attachEvent()函數綁定事件處理函數:IE9以前的的IE瀏覽器不支持addEventListener()函數,因此attachEvent()函數就有了用武之地了,代碼實例以下:<!DOCTYPE html>   <html>   <head>   <meta charset=" utf-8">   <meta name="author" content="http://www.softwhy.com/" /> <title>window.onload用法-螞蟻部落</title><style type="text/css">#bg{  width:100px;  height:100px;  border:2px solid red;}</style><script type="text/javascript">window.attachEvent("onload",bg);window.attachEvent("onload",changeW);function bg(){  document.getElementById("bg").style.backgroundColor="#F90";}function changeW(){  document.getElementById("bg").style.width="200px";}</script></head><body>  <div id="bg"></div></body></html>以上代碼的效果和使用addEventListener()函數的效果是同樣的,簡單介紹一下語法格式:addEventListener("type",函數名)此函數只有兩個參數,第一個參數是事件類型,不過它和addEventListener()的第一個參數的做用是同樣,可是名稱有所區別,名稱前面是具備"on",第二個參數就是要綁定的事件處理函數名稱。爲了兼容各瀏覽器,須要將以上代碼進行改造,實例以下:<!DOCTYPE html>   <html>   <head>   <meta charset=" utf-8">   <meta name="author" content="http://www.softwhy.com/" /> <title>window.onload用法-螞蟻部落</title><style type="text/css">#bg{  width:100px;  height:100px;  border:2px solid red;}</style><script type="text/javascript">if(window.addEventListener){  window.addEventListener("load",bg,false);  window.addEventListener("load",changeW,false);}else{  window.attachEvent("onload",bg);  window.attachEvent("onload",changeW);}function bg(){  document.getElementById("bg").style.backgroundColor="#F90";}function changeW(){  document.getElementById("bg").style.width="200px";}</script></head><body>  <div id="bg"></div></body></html>以上代碼代碼解決了各大瀏覽器的兼容性問題。在上面代碼中使用如下代碼進行判斷:if(object.addEventListener){  object.addEventListener();}else{  object.attachEvent();}經過if語句判斷對象是否具備addEventListener屬性,若是有這使用addEventListener()函數,不然使用attachEvent()函數。
相關文章
相關標籤/搜索