Jquery有多神奇?

明天我就要開始改改jq的源碼了…

為了配合項目,我設(shè)想了一個方式,修改readylist的執(zhí)行順序,以便資源加載完成之后開始初始化頁面…

先留個坑,明天實現(xiàn)以后寫后續(xù)…

2017.2.22 22:41

待續(xù)。。。

-------------------------------------------------

2017-10-21 13:43:01

我去。一個待續(xù)就等到了這個時候了,要不是來看看,我都快忘了還有這么個東西

這還是在天津的時候搞的東西,現(xiàn)在我在杭州,新公司已經(jīng)待了快半年了,看看之前的代碼,來把這篇補上好了。。。

--------------------------------------------------

正文開始

我印象里邊這個修改是因為我們原來的項目里頭有一個include插件,也是作為一個jQuery的插件存在的

然后這個插件是同步的,用xhr,這導(dǎo)致了很大的性能問題

所以我希望能改成異步的

但是異步的加載,響應(yīng)domready事件的時間點又不對了

這樣會導(dǎo)致如果頁面的js提前加載完畢,但是依賴的插件并沒有加載回來,這樣就會報錯

所以我希望在jQuery執(zhí)行domready回調(diào)的時候,等待我的異步加載完成,加載完成了再開始回調(diào),這樣就不會有問題

現(xiàn)在就有兩個問題

1.?我需要監(jiān)測異步加載的完成(當(dāng)然我們的插件僅依賴于jQuery,所以不需要做依賴管理)

2.?我需要修改jQuery的源碼,以等待異步加載完成

具體的include源碼在我的github上,本來是在天津的時候說把我自己寫的一些插件都放上去,但是后來工作的關(guān)系,沒時間,公司也不讓上傳代碼,我自己電腦基本就懶得弄那些東西了。。。

其實說出來之后解決就比較簡單了,代碼簡單到隨便瞄一眼就能看懂,不解釋了,上代碼


jquery1.9.1

找到這個domReady處理函數(shù),看一眼,里面起作用的就是被我包起來的那句話


readyList.resoveWith( document, [ jQuery ] );


把這個封起來,做成一個函數(shù),然后監(jiān)測如果加載了include插件,并且include插件并沒有完成所有加載,那么將這個回調(diào)傳給include插件

否則執(zhí)行


另外一部分就是在include中處理了,這里不多講

主要是等待,這個簡單到不行,做一個計數(shù)器,javascript又沒有線程問題,直接加減就可以了

稍微注意一下的是,我做異步加載使用的是script標(biāo)簽形式,這有幾個好處,第一是這個異步,第二個是這個能跨域

但是這個也會有個問題,兼容性問題,直接使用原生的技術(shù)就會遇到這種狗屁的問題

在ie8下,標(biāo)簽沒有l(wèi)oad事件,只有一個readystatechange事件(這個事件會相應(yīng)超過一次,需要判斷狀態(tài)值,跟xhr差不多,不過狀態(tài)沒有那么多就是了),所以需要注冊兩種事件

but

恩,萬事萬物都有一個but。。。

but?ie9尼瑪支持兩種事件,所以這里需要稍微注意一下


..............................end.........................

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 原文鏈接 http://blog.poetries.top/2016/10/20/review-jQuery 關(guān)注...
    前端進(jìn)階之旅閱讀 16,939評論 18 503
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,905評論 25 709
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計者無需花費時間糾纏JS復(fù)雜的高級特性。 1....
    LaBaby_閱讀 1,497評論 0 2
  • 1.JQuery 基礎(chǔ) 改變web開發(fā)人員創(chuàng)造搞交互性界面的方式。設(shè)計者無需花費時間糾纏JS復(fù)雜的高級特性。 1....
    LaBaby_閱讀 1,271評論 0 1
  • 總角心跡如枯蓬 無朱無碧無再生 閑人何解冬雪下 桃紅梅紅或猩紅
    就叫Oscar好了閱讀 140評論 1 0

友情鏈接更多精彩內(nèi)容