Dom ready

基本上每個(gè)庫都有這東西瓢捉,因?yàn)槿绻獙撁嫔系脑剡M(jìn)行操作逼裆,我們必須等到頁面加載了這個(gè)元素才行橱乱,否則會報(bào)錯(cuò)辜梳,但是我們很能判定某個(gè)元素是否已加載,但我們可以判定頁面是否加載泳叠,這就是我們經(jīng)常把代碼放到window.onload = function(){}之中的緣由作瞄。但window.onload事件是待到頁面上的所有資源被加載才激活,如果頁面上有許多圖片危纫,音樂或falsh宗挥,而我們要操作的元素在的它們的下方呢?因此种蝶,W3C做了少有幾樁好事契耿,搞了DOMContentLoaded與addEventListener,可能也不是他們搞的螃征,把某瀏覽器的私有實(shí)現(xiàn)蓋上個(gè)大印搪桂,標(biāo)明它是標(biāo)準(zhǔn)罷了,如safari的canvas盯滚,IE的getBoundingClientRect……DOMContentLoaded是DOM樹完成時(shí)激活的事件踢械,addEventListener支持多重加載與冒泡捕獲拙泽。本文將在它的基礎(chǔ)上進(jìn)行進(jìn)一步的封裝與改進(jìn),如setTimeout改為零秒延遲裸燎,清除setTimeout顾瞻,執(zhí)行完加載后把加載函數(shù)清除掉,對IE框架結(jié)構(gòu)的頁面進(jìn)行更安全的設(shè)置……

綜合執(zhí)行順序?yàn)椋?/h4>

1. oncontentready德绿,這時(shí)DOM樹完成
2. script defer荷荤,這時(shí)開始執(zhí)行設(shè)定了defer屬性的script
3. ondocumentready complete,這時(shí)可以使用HTC組件與XHR
4. html.doScroll 這時(shí)可以讓HTML元素使用doScroll方法
5. window.onload 這時(shí)圖片flash等資源都加載完畢

// Js 代碼
//  DOM ready
function domReady(){
    new function(){
        dom = [];
        dom.isReady = false;
        dom.isFunction = function(obj){
            return Object.prototype.toString.call(obj) === "[object Function]";
        }
        dom.Ready = function(fn){
            dom.initReady();//如果沒有建成DOM樹移稳,則走第二步蕴纳,存儲起來一起殺
            if(dom.isFunction(fn)){
                if(dom.isReady){
                    fn();//如果已經(jīng)建成DOM,則來一個(gè)殺一個(gè)
                }else{
                    dom.push(fn);//存儲加載事件
                }
            }
        }
        dom.fireReady =function(){
            if (dom.isReady)  return;
            dom.isReady = true;
            for(var i=0,n=dom.length;i<n;i++){
                var fn = dom[i];
                fn();
            }
            dom.length = 0;//清空事件
        }
        dom.initReady = function(){
            if (document.addEventListener) {
                document.addEventListener( "DOMContentLoaded", function(){
                    document.removeEventListener( "DOMContentLoaded", arguments.callee, false );//清除加載函數(shù)
                    dom.fireReady();
                }, false );
            }else{
                if (document.getElementById) {
                    document.write("<script id=\"ie-domReady\" defer='defer'src=\"http://:\"><\/script>");
                    document.getElementById("ie-domReady").onreadystatechange = function() {
                        if (this.readyState === "complete") {
                            dom.fireReady();
                            this.onreadystatechange = null;
                            this.parentNode.removeChild(this)
                        }
                    };
                }
            }
        }
    }

    dom.Ready(function(){
        alert("我的domReady个粱!")
    });
    dom.Ready(function(){
        alert("我的domReady測試多重加載1古毛!")
    });
    dom.Ready(function(){
        alert("我的domReady測試多重加載2!")
    });
    dom.Ready(function(){
        alert(document.getElementById("test").innerHTML)
    });

    window.onload = function(){
        alert("這是onload事件!")
    };
}


// html 代碼

<!doctype html>
<html dir="ltr" lang="zh-CN">
<head id="head">
    <meta charset="utf-8"/>
    <title>jQuery的domReady </title>

    <script type="text/javascript" src="common.js">

    </script>
</head>
<body>
![圖片1](http://img2.imgtn.bdimg.com/it/u=850457477,3991515685&fm=26&gp=0.jpg)
![圖片2](http://img0.imgtn.bdimg.com/it/u=3229175216,3077134478&fm=26&gp=0.jpg)
![圖片3](http://img1.imgtn.bdimg.com/it/u=1038174750,276046729&fm=26&gp=0.jpg)
![圖片4](http://upload-images.jianshu.io/upload_images/6521051-a1b178f3dd5ca405.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![圖片5](http://upload-images.jianshu.io/upload_images/6521051-a1b178f3dd5ca405.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
<table class="filament_table" cellspacing="0" width="700" rules="cols" >
    <col class="grey" width="25%"></col>
    <col class="yellow"></col>
    <thead>
    <tr>
        <th>
            參數(shù)
        </th>
        <th>
            描述
        </th>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>
            scrollbarDown
        </td>
        <td>
            Default. Down scroll arrow is at the specified location
        </td>
    </tr>
    <tr>
        <td>
            scrollbarHThumb
        </td>
        <td>
            Horizontal scroll thumb or box is at the specified location
        </td>
    </tr>
    <tr>
        <td>
            scrollbarLeft
        </td>
        <td>
            Left scroll arrow is at the specified location
        </td>
    </tr>
    <tr>
        <td>
            scrollbarPageDown
        </td>
        <td>
            Page-down scroll bar shaft is at the specified location
        </td>
    </tr>
    <tr>
        <td>
            scrollbarPageLeft
        </td>
        <td>
            Page-left scroll bar shaft is at the specified location
        </td>
    </tr>
    <tr>
        <td>
            scrollbarVThumb
        </td>
        <td>
            Vertical scroll thumb or box is at the specified location
        </td>
    </tr>
    <tr>
        <td>
            down
        </td>
        <td>
            Composite reference to scrollbarDown
        </td>
    </tr>
    <tr>
        <td>
            left
        </td>
        <td>
            Composite reference to scrollbarLeft
        </td>
    </tr>
    </tbody>
</table>

<p id="test">我們添加了些圖片與表格延緩頁面的加載速度</p>
![圖片1](http://img2.imgtn.bdimg.com/it/u=850457477,3991515685&fm=26&gp=0.jpg)
![圖片2](http://img0.imgtn.bdimg.com/it/u=3229175216,3077134478&fm=26&gp=0.jpg)
![圖片3](http://img1.imgtn.bdimg.com/it/u=1038174750,276046729&fm=26&gp=0.jpg)
![圖片4](http://upload-images.jianshu.io/upload_images/6521051-a1b178f3dd5ca405.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![圖片5](http://upload-images.jianshu.io/upload_images/6521051-a1b178f3dd5ca405.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
</body>
</html>








最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末都许,一起剝皮案震驚了整個(gè)濱河市稻薇,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胶征,老刑警劉巖塞椎,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異睛低,居然都是意外死亡案狠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門钱雷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來骂铁,“玉大人,你說我怎么就攤上這事罩抗±郑” “怎么了?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵澄暮,是天一觀的道長名段。 經(jīng)常有香客問我阱扬,道長泣懊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任麻惶,我火速辦了婚禮馍刮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘窃蹋。我一直安慰自己卡啰,他們只是感情好静稻,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著匈辱,像睡著了一般振湾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上亡脸,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天押搪,我揣著相機(jī)與錄音,去河邊找鬼浅碾。 笑死大州,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的垂谢。 我是一名探鬼主播厦画,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滥朱!你這毒婦竟也來了根暑?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤徙邻,失蹤者是張志新(化名)和其女友劉穎购裙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹃栽,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躏率,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了民鼓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薇芝。...
    茶點(diǎn)故事閱讀 40,427評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖丰嘉,靈堂內(nèi)的尸體忽然破棺而出夯到,到底是詐尸還是另有隱情,我是刑警寧澤饮亏,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布耍贾,位于F島的核電站,受9級特大地震影響路幸,放射性物質(zhì)發(fā)生泄漏荐开。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一简肴、第九天 我趴在偏房一處隱蔽的房頂上張望晃听。 院中可真熱鬧,春花似錦、人聲如沸能扒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽初斑。三九已至辛润,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間见秤,已是汗流浹背频蛔。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留秦叛,地道東北人晦溪。 一個(gè)月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像挣跋,于是被迫代替她去往敵國和親三圆。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容