document.ready和onload的區別css
頁面加載完成有兩種事件:html
一是ready,表示文檔結構已經加載完成(不包含圖片等非文字媒體文件);express
二是onload,指示頁面包含圖片等文件在內的全部元素都加載完成。瀏覽器
一、Dom Readydom
用jQ的人不少人都是這麼開始寫腳本的:
$(function(){
// do something
});性能
例如:.net
$(function() {
$("a").click(function() {
alert("Hello world!");
});htm
})blog
這個例子就是給全部的a標籤 綁定了一個click事件。即當全部連接被鼠標單擊的時候,都執行 alert("Hello World!");
(本身的理解)也就是說頁面加載時綁定,真正該觸發時觸發。
其實這個就是jq ready()的簡寫,他等價於:
$(document).ready(function(){
//do something
})
或者下面這個方法,jQuer的默認參數是:「document」;
$().ready(function(){
//do something
})
這個就是jq ready()的方法就是Dom Ready,他的做用或者意義就是:在DOM加載完成後就能夠能夠對DOM進行操做。
通常狀況一個頁面響應加載的順序是,域名解析-加載html-加載js和css-加載圖片等其餘信息。
那麼Dom Ready應該在「加載js和css」和「加載圖片等其餘信息」之間,就能夠操做Dom了。事件
二、Dom Load
用原生的js的時候咱們一般用onload時間來作一些事情,好比:
window.onload=function(){
//do something
}
或者常常用到的圖片,假設這個
document.getElementById("imgID").onload=function(){
//do something
}
這種就是Dom Load,他的做用或者意義就是:在document文檔加載完成後就能夠能夠對DOM進行操做,document文檔包括了加載圖片等其餘信息。
那麼Dom Load就是在頁面響應加載的順序中的「加載圖片等其餘信息」以後,就能夠操做Dom了。
3.用個最經常使用的例子說明Dom Ready和Dom Load二者的區別
Dom Ready是在dom加載完成後就能夠直接對dom進行操做,好比一張圖片只要<img>標籤完成,不用等這個圖片加載完成,就能夠設置圖片的寬高的屬性或樣式等;
Dom Load是在整個document文檔(包括了加載圖片等其餘信息)加載完成後就能夠直接對dom進行操做,好比一張圖片要等這個圖標加載完成以後才能設置圖片的寬高的屬性或樣式等;
好比一個圖片瀏覽的效果,一般若是圖片尺寸很大的狀況下,爲了防止圖片把頁面撐開一般會限定圖片的寬度或高度,若是是單張圖片或者是多張規格比例統一的圖片下咱們能夠直接在<img>上加個寬度或者高度的屬性<img src=「img.jpg」 alt=」碼頭的大照片」 width=「100」 height=「90」>,或者能夠在css樣式中加寬度或者高度的屬性(推薦)。可是若是這些張規格比例不統一的圖片要瀏覽呢?那就有問題,你設置寬高極可能形成圖片嚴重失真。在ie6以後ie7,ie8還有其餘主流瀏覽器支持css2.1中min-width,max-width,min-height,max-width,這樣咱們就能夠用min-width,max-width,min-height,max-width解決這些問題,可是ie6除非是拋棄性能問題用css表達式(固然old9(http://old9.blogsome.com/2008/10/26/css-expression-reloaded/)和懌飛(http://www.planabc.net/2009/09/21/optimization_of_css_eexpression/)有關於css表達式性能問題的解決方案,你們能夠看一下)。這個時候ie的最好解決方案就是用Dom Ready而不是Dom Load,由於一般大圖片加載的時候會一點一點的加載,這個在尺寸大,字節多,網速慢的時候表現的很是明顯,用Dom Load,一般是先把頁面撐開,加載完成後再把圖片重設寬高,圖片加載多少時間,這個頁面就會撐開多久,用戶會很是難受!!