1. 程式人生 > >比windows.onload更早執行的方法

比windows.onload更早執行的方法

最近在學習jQuery,裡面牽涉到頁面的載入問題,無意中看到這篇文章,覺得很好,估計以後能夠用上,特意轉貼於下:

新的版本放棄使用document.write()(實際上我們依賴的是script標籤的defer觸發機制),主要基於如下幾個理由:

  1. XHTML不支援document.write
  2. 當頁面上的資源非常少時,會晚於window.onload
  3. document.write有時會覆寫我們原有的DOM
  4. document.write生成的script不能通過內部函式移除

外國javascript高手Diego Perini於是發掘了doScroll這個方法。在IE下,doScroll方法存在於所有標籤。但我搞來搞去,發現光是doScroll也不行,時不時就發現window.onload執行於domReady之前。只有結合onreadystatechange與doScroll這兩個方法,我們才能在IE中搞出與標準瀏覽器相同的結果。因此你在jQuery,Prototype,swfobject,Ext等類庫看到它們共同出現。而onreadystatechange其實也有些問題的,具體自己可能google一下,因此2006年左右實現domReady的程式碼基本依仗於document.write()。嗯,剩下的我就在程式碼間的註釋中說明吧,這樣更一目瞭解。

?
/* take from dom library version 1.0, inspired by  jQuery Copyright 2010-2011 (2011.2.27更新) Dual licensed under the MIT or GPL Version 2 licenses. author "司徒正美" */ var dom = []; //用於判定頁面是否載入完畢 dom.isReady  = false; //用於新增要執行的函式 dom.ready =
function(fn){ if ( dom.isReady ) { fn() }else { dom.push( fn ); } } //執行所有在window.onload之前放入的函式 dom.fireReady = function() { if ( !dom.isReady ) { if ( !document.body ) { return setTimeout( dom.fireReady, 16 ); } dom.isReady = 1; if ( dom.length ) {
for(var i = 0, fn;fn = dom[i];i++) fn() } } } //開始初始化domReady函式,判定頁面的載入情況 if ( document.readyState === "complete" ) { dom.fireReady(); }else if(-[1,] ){ document.addEventListener("DOMContentLoaded",function() { document.removeEventListener("DOMContentLoaded",  arguments.callee , false ); dom.fireReady(); },false 

相關推薦

windows.onload執行方法

最近在學習jQuery,裡面牽涉到頁面的載入問題,無意中看到這篇文章,覺得很好,估計以後能夠用上,特意轉貼於下: 新的版本放棄使用document.write()(實際上我們依賴的是script標籤的defer觸發機制),主要基於如下幾個理由

Switch case 高效的方法:字典(Dictionary) + 委託(delegate)

Hello,我是KitStar 以下文章整理的不對。還請見諒 以下程式碼書寫於Unity3D中。 眾所周知,在C#中。一條switch語句允許測試一個變數在等於多個值的時的情況

特幣跌破:冬季我們想象的到來

一場大佬的算力大戰,造成的市場動盪足以摧毀很多專案 這次BCH硬分叉事件的起因,是位元大陸投資的ABC開發團隊認為BCH應該往基礎建設公鏈方向發展,像以太坊一樣開拓出更多應用場景。而以CSW主導的SV社群陣營,則希望BCH仍像當年中本聰論文描述的那樣,對操作碼嚴格限制,專注在轉賬交易本身,並

修改Windows中文使用者名稱為英文(全面的方法

網上方法很多,但是大多不全面。 我的建議是   1,新建/切換管理員賬號 net user administrator /active:yes 然後點選桌面,使用Alt+F4組合鍵 登出中文使用者名稱賬號,並修改該中文使用者名稱目錄為英文 如果不能登出,可以在 工作管理員 -

【Ansible】Ansible控制windows外掛安裝及執行error與解決方法

一、 問:因pip版本問題無法安裝kerberos 答:安裝提示需要先安裝pip升級包         下載pip9.0.1升級包: https://pypi.python.org/packa

php——21-關鍵詞 const(執行效率 define 可能高) define

語法及注意點 const 定義常量語法:const 常量識別符號 = 常量值; const 關鍵字一般在類的聲明裡定義常量時使用;在 PHP 5.3.0 以後,可以使用 const 關鍵字在類定義的外

Windows 10 專業版啟用方法(親測有效)暫時只可以用180天(後續更新可以久的啟用方式)

右鍵單擊開始按鈕: 管理員方式執行Powershell,然後依次輸入下面三條命令,回車,會看到三條提示語句。 分別為, slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX 紅色字型為啟用金鑰 獲取金鑰成功。 slmgr /skms kms.03k

windows系統下可執行程式呼叫lib靜態庫和dll動態庫的方法

#include <stdio.h> #include <Windows.h>   int main() {    HINSTANCE h=LoadLibraryA("newdll.dll");     typedef int (* FunPtr)(int a,int b);//定義函

windows Git Bash 無法執行python檔案的解決方法

今天學習Django,有一個小需求在w7 系統 的git bash 環境 執行 python 檔案,但是輸入命令,Enter 後,一直沒任何響應,最後找到方法,總結下 在git bash 中執行下python - -version 或 pip list

【TensorFlow】Windows環境下PyCharm執行TensorFlow GPU版(附TensorFlow更新方法)

作為一名穀粉再加上最近研究深度學習,不得不說TensorFlow是一個很好的切入點,今天看了下官方教程踩了幾個坑後,終於在PyCharm上起飛了,廢話不多說下面開始搭建環境吧。(此教程Win10,8.1和7都適用,只需下載不同的安裝檔案即可) 1. 確定安

ConcurrentHashMap多執行緒下HashTable效率

點題:為什麼 ConcurrentHashMap在多執行緒下效率更高? HashTable使用一把鎖處理併發問題,當有多個執行緒訪問時,需要多個執行緒競爭一把鎖,導致阻塞 Conc

VS 中引入app.manifest(c#程式在win7及以上windows版本下以管理員許可權執行方法

開啟VS2005、VS2008、VS2010、VS2012、VS2013、VS2015工程,檢視工程資料夾中的Properties資料夾下是否有app.manifest這個檔案;如沒有,按如下方式建立:滑鼠右擊工程在選單中選擇“屬性”,點選工程屬性的“安全性”標籤,在安全性

Windows 任務計劃 隱藏執行視窗的幾種方法

說明:【任務計劃】,有時候被大家稱作為【計劃任務】,大家習慣上都叫Windows計劃任務,實際上人家真的名字叫【任務計劃】:請看,有圖有真相 之前做專案的時候,遇到過這個不算問題的問題,不隱藏執行介面“小黑窗”,程式一樣會執行下去,但是如果有人同時在這臺電腦上操作,一不小

windows下PHP呼叫執行桌面程式的方法

php呼叫外部程式的方法一般用exec,system等,但執行時候必須等待外部程式結束php頁面才能執行完畢,如果php寫在頁面裡,那麼網頁會一直等待。如何改變這種情況呢?經過查閱相關資料和不斷的嘗試終於解決了這個問題(windows平臺,linux平臺參看其他文章) 首先

美化 Windows 字型的神器!(讓字型渲染顯示效果蘋果電腦清晰炫麗)

軟體下載地址:http://dl.vmall.com/c0t6h3wo3k點選開啟連結 蘋果 Mac 系統總能讓人眼前一亮,除了其精美的軟體介面設計外,最重要是其文字顯示效果(渲染方式)比 Windows 更加清晰銳利,閱讀起來更加舒服。於是就有高手開發了一款叫 GD

什麼情況下用+運算子進行字串連線呼叫StringBuilder物件的append方法連線字串效能好?

java技術交流QQ群:83753349經常在網上看到或者在周圍聽到有人說字串拼接不要直接用 String 相加, StringBuilder 的效率要比 String 直接相加拼接要高。還有人常說, StringBuffer 是同步的(執行緒安全的), StringBuil

Windows安全模式下執行MySQL的方法

        公司的電腦裝了WebSense,很多事情都處於監控範圍內,沒辦法只能在安全模式下做一些事情。下面介紹如何在安全模式下執行MySQL         如果在安全模式下嘗試啟動MySQL,會得到一個錯誤提示“Windows無法啟動Windows Installe

Windows普通用戶執行特殊權限

xpl 方案 版本 sys 筆記 ini ftw 計算機 disable 平常也不寫博客,第一是不善於表達,第二就是水平有限。最近外包告一段落,現在大半夜的回到老家,記錄下此次外包的一些問題與心得 最主要遇到的問題就是權限問題。軟件使用者都是在Users權限下,但軟

spring啟動後立即執行方法

per 作用 spring容器 隨著 pri after proto 一次 繼承 1、方法所屬的類繼承InitializingBean接口。 2、重寫afterPropertiesSet()方法。 afterPropertiesSet方法會在bean被初始化時執行。 當be