將模組ID與factory關聯在一起的新思路

來源:互聯網
上載者:User

這是利用到jquery團隊在IE6-8中添加HTML5新標籤中的一個hack!

function createSafeFragment( document ) {var list = nodeNames.split( "|" ),safeFrag = document.createDocumentFragment();if ( safeFrag.createElement ) {while ( list.length ) {safeFrag.createElement(list.pop());}}return safeFrag;}

但到IE9後文檔片段就沒有createElement方法了。但我們可以改成document.createElement("script")實現。

但到IE10後如果文檔片段不插入DOM樹,就不會發出請求,這個與其他標準瀏覽器的行為一致。因此與瀏覽器搏鬥真是消耗戰啊,人家可以持續升級,把你焦頭爛額搞鼓出來的hack秒殺。

IE的問題在於先parse不一定先onload,加之IE早期的onload是用onreadystatechange 類比的。另外,IE6還有base標籤這東西作崇,逼使我們以倒序插入(insertBefore)。

            var frag = document.createDocumentFragment()            var script = frag.createElement('script')            frag.moduleID = "lang"            script.onreadystatechange = function(){                console.log(this.parentNode.nodeType);//11                console.log(this.parentNode.moduleID);//lang                //得到模組ID,然後將它與lang.js中的factory綁定在一起                document.getElementsByTagName("head")[0].appendChild(frag)            }            script.src = 'lang.js';            frag.appendChild(script)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.