<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript的jQuery庫中ready方法的學習教程_jquery

        來源:懂視網 責編:小采 時間:2020-11-27 21:42:08
        文檔

        JavaScript的jQuery庫中ready方法的學習教程_jquery

        JavaScript的jQuery庫中ready方法的學習教程_jquery:學習 jQuery 有許多途徑,我們今天從 jQuery 的 ready 函數開始。本例中的代碼都來自于 jQuery 腳本庫。 如果你使用過 jQuery , 就必然使用過 ready 函數,它用來注冊當頁面準備好之后可以執行的函數。 問題來啦,我們的頁面什么時候準備好了呢? onloa
        推薦度:
        導讀JavaScript的jQuery庫中ready方法的學習教程_jquery:學習 jQuery 有許多途徑,我們今天從 jQuery 的 ready 函數開始。本例中的代碼都來自于 jQuery 腳本庫。 如果你使用過 jQuery , 就必然使用過 ready 函數,它用來注冊當頁面準備好之后可以執行的函數。 問題來啦,我們的頁面什么時候準備好了呢? onloa

        學習 jQuery 有許多途徑,我們今天從 jQuery 的 ready 函數開始。本例中的代碼都來自于 jQuery 腳本庫。

        如果你使用過 jQuery , 就必然使用過 ready 函數,它用來注冊當頁面準備好之后可以執行的函數。

        問題來啦,我們的頁面什么時候準備好了呢?

        onload 事件
        最基本的處理方式就是頁面的 onload 事件,我們在處理這個事件的時候,可以有多種方式,即可以通過 HTML 方式,直接寫在 body 元素的開始標記中,也可以使用事件注冊的方式來使用,這又可以分為 DOM0 方式和 DOM2 方式。再考慮到瀏覽器的兼容性,使用 DOM2 方式寫出來,如下所示。


        DOMContentLoaded 事件
        不過 onload 事件要等到所有頁面元素加載完成才會觸發, 包括頁面上的圖片等等。如果網頁上有大量的圖片,效果可想而知,用戶可能在沒有看到圖片的時候,就已經開始操作頁面了,而這時我們的頁面還沒有初始化,事件還沒有注冊上,這豈不是太晚了!

        除了大家熟知的 onload 事件之外, 與 DOM 中的 onload 事件相近的,我們還有 DOMContentLoaded 事件可以考慮, 基于標準的瀏覽器支持這個事件, 當所有 DOM 解析完以后會觸發這個事件。

        這樣,對于基于標準的瀏覽器來說,我們還可以注冊這個事件的處理。這樣,我們可能更早地捕獲到加載完成的事件。

        onreadystatechange 事件
        不標準的瀏覽器怎么辦呢?

        如果瀏覽器存在 document.onreadystatechange 事件,當該事件觸發時,如果 document.readyState=complete 的時候,可視為 DOM 樹已經載入。

        不過,這個事件不太可靠,比如當頁面中存在圖片的時候,可能反而在 onload 事件之后才能觸發,換言之,它只能正確地執行于頁面不包含二進制資源或非常少或者被緩存時作為一個備選吧。


        DOMContentLoaded 函數在做什么呢?最終還是要調用 jQuery.ready 函數。

        doScroll 檢測法
        MSDN 關于 JScript 的一個方法有段不起眼的話,當頁面 DOM 未加載完成時,調用 doScroll 方法時,會產生異常。那么我們反過來用,如果不異常,那么就是頁面DOM加載完畢了!

        Diego Perini 在 2007 年的時候,報告了一種檢測 IE 是否加載完成的方式,使用 doScroll 方法調用。詳細的說明見這里。
        原理是對于 IE 在非 iframe 內時,只有不斷地通過能否執行 doScroll 判斷 DOM 是否加載完畢。在本例中每間隔 50 毫秒嘗試去執行 doScroll,注意,由于頁面沒有加載完成的時候,調用 doScroll 會導致異常,所以使用了 try -catch 來捕獲異常。

        document.readyState 狀態
        如果我們注冊 ready 函數的時間點太晚了,頁面已經加載完成之后,我們才注冊自己的 ready 函數,那就用不著上面的層層檢查了,直接看看當前頁面的 readyState 就可以了,如果已經是 complete ,那就可以直接執行我們準備注冊的 ready 函數了。不過 ChrisS 報告了一個很特別的錯誤情況,我們需要延遲一下執行。

        setTimeout 經常被用來做網頁上的定時器,允許為它指定一個毫秒數作為間隔執行的時間。當被啟動的程序需要在非常短的時間內運行,我們就會給她指定一個很小的時間數,或者需要馬上執行的話,我們甚至把這個毫秒數設置為0,但事實上,setTimeout有一個最小執行時間,當指定的時間小于該時間時,瀏覽器會用最小允許的時間作為setTimeout的時間間隔,也就是說即使我們把setTimeout的毫秒數設置為0,被調用的程序也沒有馬上啟動。

        這個最小的時間間隔是多少呢?這和瀏覽器及操作系統有關。在John Resig的新書《Javascript忍者的秘密》一書中提到

        Browsers all have a 10ms minimum delay on OSX and a(approximately) 15ms delay on Windows.(在蘋果機上的最小時間間隔是10毫秒,在Windows系統上的最小時間間隔大約是15毫秒)

        ,另外,MDC中關于setTimeout的介紹中也提到,Firefox中定義的最小時間間隔(DOM_MIN_TIMEOUT_VALUE)是10毫秒,HTML5定義的最小時間間隔是4毫秒。既然規范都是這樣寫的,那看來使用setTimeout是沒辦法再把這個最小時間間隔縮短了。

        這樣,通過設置為 1, 我們可以讓程序在瀏覽器支持的最小時間間隔之后執行了。


        完整的代碼
        在 jQuery 中完整的代碼如下所示。位于 jQuery 1.8.3 源代碼的 #842 行。

        那么,又是誰來調用呢?當然是需要的時候,在我們調用 ready 函數的時候,才需要注冊這些判斷頁面是否完全加載的處理,這段代碼在 1.8.3 中位于代碼的 #244 行,如下所示:

        在頁面上引用 jQuery 腳本庫之后,執行了 jQuery 的初始化函數,初始化函數中創建了 ready 函數。我們在通過 ready 函數注冊事件處理之前,jQuery 完成了頁面檢測代碼的注冊。這樣。當頁面完全加載之后,我們注冊的函數就被調用了。


        jQuery Ready 方法的簡短寫法

        寫 jQuery 代碼的時候,一般要寫一個 Ready 方法,以確保 DOM 已加載完畢,然后再執行相應的 jQuery 代碼。Ready 方法一般寫法如下:

        但是在看其他人寫的 jQuery 代碼的時候,經常又會看到如下寫法:

        第二種寫法雖然簡短了許多,但是在功能上和第一種寫法是等價的,如果你不相信,可以看一下 jQuery 的源代碼中有如下代碼片段:

        如果傳入選擇器中的參數是一個函數,那么會自動返回一個 rootjQuery.ready( selector ),而 rootjQuery 又是 jQuery(document) 的一個引用,所以這里就相當于調用 jQuery(document).ready() 方法,而之前的那個匿名方法亦被傳入其中以備執行。

        這種簡短寫法雖說減少了了一點代碼量,但是可讀性稍差,所以我個人還是傾向于前面的第一種寫法,特別是在團隊開發中,僅僅是為了語意明確。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript的jQuery庫中ready方法的學習教程_jquery

        JavaScript的jQuery庫中ready方法的學習教程_jquery:學習 jQuery 有許多途徑,我們今天從 jQuery 的 ready 函數開始。本例中的代碼都來自于 jQuery 腳本庫。 如果你使用過 jQuery , 就必然使用過 ready 函數,它用來注冊當頁面準備好之后可以執行的函數。 問題來啦,我們的頁面什么時候準備好了呢? onloa
        推薦度:
        標簽: javascript jQuery ready
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲资源在线观看| 国产午夜亚洲精品午夜鲁丝片| 国产91成人精品亚洲精品| 亚洲爆乳成av人在线视菜奈实| 久久成人18免费网站| 成人免费一区二区无码视频| 久久亚洲国产成人影院| 成人免费毛片观看| 美女又黄又免费的视频| 久久亚洲色一区二区三区| a国产成人免费视频| 亚洲VA综合VA国产产VA中| 日韩一区二区三区免费播放| 中文字幕不卡亚洲 | 日本高清免费中文在线看| 国产免费AV片在线播放唯爱网| 亚洲一区二区影视| 在线观看视频免费国语| 国产亚洲精品91| 亚洲人成精品久久久久| 一级毛片**免费看试看20分钟| 亚洲午夜国产精品无码老牛影视 | 亚洲欧洲免费视频| 亚洲精品无码久久一线| 91福利免费视频| 久久久亚洲精品国产| 免费观看AV片在线播放| 18gay台湾男同亚洲男同| 麻豆精品成人免费国产片| 激情内射亚洲一区二区三区| 成人免费无码大片a毛片| 精品一区二区三区免费观看| 亚洲黄网在线观看| 免费一级毛片在级播放| 久久国产精品萌白酱免费| 亚洲Av无码国产一区二区| 亚洲av最新在线网址| 精品国产免费观看| 污污网站免费观看| 污污免费在线观看| 亚洲xxxx18|