相容低版本IE瀏覽器的DOMContentLoaded事件
用過jQuery的朋友一定對$(document).reay(function(){})不會陌生。
它的作用是當文件結構載入完畢就會觸發事件,其實就是對DOMContentLoaded事件的封裝。
下面是相容低版本IE瀏覽器的DOMContentLoaded的事件,程式碼如下:
[JavaScript] 純文字檢視 複製程式碼//儲存domReady的事件佇列 eventQueue = []; //判斷DOM是否載入完畢 isReady = false; //判斷DOMReady是否繫結 isBind = false; /*執行domReady() * *@param {function} *@execute 將事件處理程式壓入事件佇列,並繫結DOMContentLoaded * 如果DOM載入已經完成,則立即執行 *@caller */ function domReady(fn){ if (isReady) { fn.call(window); } else{ eventQueue.push(fn); }; bindReady(); }; /*domReady事件繫結 * *@param null *@execute 現代瀏覽器通過addEvListener繫結DOMContentLoaded,包括ie9+ ie6-8通過判斷doScroll判斷DOM是否載入完畢 *@caller domReady() */ function bindReady(){ if (isReady) return; if (isBind) return; isBind = true; if (window.addEventListener) { document.addEventListener('DOMContentLoaded',execFn,false); } else if (window.attachEvent) { doScroll(); }; }; /*doScroll判斷ie6-8的DOM是否載入完成 * *@param null *@execute doScroll判斷DOM是否載入完成 *@caller bindReady() */ function doScroll(){ try{ document.documentElement.doScroll('left'); } catch(error){ return setTimeout(doScroll,20); }; execFn(); }; /*執行事件佇列 * *@param null *@execute 迴圈執行佇列中的事件處理程式 *@caller bindReady() */ function execFn(){ if (!isReady) { isReady = true; for (var i = 0; i < eventQueue.length; i++) { eventQueue[i].call(window); }; eventQueue = []; }; }; //js檔案1 domReady(function(){ }); //js檔案2 domReady(function(){ }); //注意,如果是非同步載入的js就不要繫結domReady方法,不然函式不會執行, //因為非同步載入的js下載之前,DOMContentLoaded已經觸發,addEventListener執行時已經監聽不到了
相關文章
- javascript相容低版本IE瀏覽器的事件物件JavaScript瀏覽器事件物件
- 相容所有瀏覽器的DOMContentLoaded事件瀏覽器事件
- 相容低版本IE瀏覽器的阻止事件冒泡效果程式碼瀏覽器事件
- 相容低版本IE瀏覽器的Object.create()方法瀏覽器Object
- 網頁變灰相容IE低版本瀏覽器網頁瀏覽器
- IE瀏覽器相容瀏覽器
- js實現的通用相容低版本IE瀏覽器的事件註冊和刪除JS瀏覽器事件
- 相容低版本IE瀏覽器的背景顏色漸變效果瀏覽器
- 模擬實現相容低版本IE瀏覽器的原生bind()瀏覽器
- 阻止瀏覽器冒泡事件,相容firefox和ie瀏覽器事件Firefox
- element ui 相容低版本瀏覽器UI瀏覽器
- 相容低版本IE瀏覽器的一些心得體會(持續更新)瀏覽器
- ie瀏覽器相容模式怎麼設定在哪裡 ie瀏覽器相容模式設定方法瀏覽器模式
- 絕對不能在低版本IE瀏覽器相容性問題上妥協瀏覽器
- 準確獲取低版本IE瀏覽器的版本號瀏覽器
- IE瀏覽器低版本判斷及升級提示瀏覽器
- js相容各個瀏覽器的事件物件JS瀏覽器事件物件
- IE瀏覽器下常見的CSS相容問題瀏覽器CSS
- 讓IE低版本瀏覽器也支援placeholder屬性瀏覽器
- Bsie:讓 Bootsrap 相容 IE6-8 瀏覽器boot瀏覽器
- 相容IE8和IE7瀏覽器的圓形圖案瀏覽器
- 對 IE6 ~ IE8 老瀏覽器相容的 intern-geezer瀏覽器
- 相容所有瀏覽器的阻止事件冒泡程式碼瀏覽器事件
- 相容所有瀏覽器的阻止事件冒泡封裝瀏覽器事件封裝
- 瀏覽器元素全屏api和在ie核心的部分相容瀏覽器API
- 建立相容IE6瀏覽器的ajax請求物件瀏覽器物件
- IE低版本瀏覽器document.referrer丟失解決方案瀏覽器
- Ionic4相容IE瀏覽器處理瀏覽器
- js相容所有瀏覽器的事件繫結程式碼JS瀏覽器事件
- 相容所有瀏覽器的阻止事件冒泡js程式碼瀏覽器事件JS
- microsoft edge是ie瀏覽器嗎 edge瀏覽器和ie瀏覽器一樣嗎ROS瀏覽器
- 瀏覽器相容IE6、IE7、IE8、Firefox、OperaCSShack區分瀏覽器FirefoxCSS
- 低版本IE瀏覽器iframe記憶體不釋放問題瀏覽器記憶體
- 相容低版本IE的document.getElementsByClassName()
- 前端檔案下載相容方案(相容主流瀏覽器,包括IE與Safari)前端瀏覽器
- 關於UC瀏覽器相容scroll事件問題瀏覽器事件
- 相容IE瀏覽器的判斷img圖片尺寸的程式碼瀏覽器
- .net火狐瀏覽器 ie瀏覽器 判斷瀏覽器