[發(fā)明專利]一種延遲加載JS腳本的方法和裝置有效
| 申請(qǐng)?zhí)枺?/td> | 201811224627.X | 申請(qǐng)日: | 2018-10-19 |
| 公開(kāi)(公告)號(hào): | CN109343908B | 公開(kāi)(公告)日: | 2020-12-29 |
| 發(fā)明(設(shè)計(jì))人: | 鄭家興 | 申請(qǐng)(專利權(quán))人: | 網(wǎng)宿科技股份有限公司 |
| 主分類號(hào): | G06F9/445 | 分類號(hào): | G06F9/445;G06F16/955 |
| 代理公司: | 北京華智則銘知識(shí)產(chǎn)權(quán)代理有限公司 11573 | 代理人: | 劉榮鑫 |
| 地址: | 201800 *** | 國(guó)省代碼: | 上海;31 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 延遲 加載 js 腳本 方法 裝置 | ||
本發(fā)明公開(kāi)了一種延遲加載JS腳本的方法和裝置,屬于網(wǎng)頁(yè)處理技術(shù)領(lǐng)域。所述方法包括:判斷目標(biāo)瀏覽器是否支持async屬性的按序執(zhí)行功能;如果支持,則基于待延遲加載的各個(gè)JS腳本的URL地址創(chuàng)建每個(gè)所述JS腳本的腳本標(biāo)簽,并對(duì)每個(gè)所述腳本標(biāo)簽設(shè)置async=false;按照各個(gè)所述JS腳本的腳本執(zhí)行順序,依次將每個(gè)所述腳本標(biāo)簽插入到HTML文檔,以使所述目標(biāo)瀏覽器并行下載各個(gè)所述JS腳本,并按照所述腳本執(zhí)行順序執(zhí)行每個(gè)所述JS腳本。采用本發(fā)明,可以提高JS腳本的延遲加載效率。
技術(shù)領(lǐng)域
本發(fā)明涉及網(wǎng)頁(yè)處理技術(shù)領(lǐng)域,特別涉及一種延遲加載JS腳本的方法和裝置。
背景技術(shù)
網(wǎng)頁(yè)中往往包含有各類資源,如文字、圖片、音頻和視頻等資源。網(wǎng)頁(yè)瀏覽器對(duì)網(wǎng)頁(yè)的打開(kāi)速度與該網(wǎng)頁(yè)中各資源的加載完成情況相關(guān),如果網(wǎng)頁(yè)瀏覽器對(duì)該網(wǎng)頁(yè)中各資源完成加載的用時(shí)越短,則打開(kāi)該網(wǎng)頁(yè)速度越快。
在上述各類資源中,JS(JavaScript)腳本較為特殊,其對(duì)網(wǎng)頁(yè)的加載完成情況不產(chǎn)生影響,但會(huì)對(duì)網(wǎng)頁(yè)的加載時(shí)間產(chǎn)生影響。JS腳本具有如下的加載邏輯:網(wǎng)頁(yè)瀏覽器在下載完成JS腳本后,會(huì)立即執(zhí)行該JS腳本,同時(shí)會(huì)對(duì)網(wǎng)頁(yè)中的后續(xù)資源停止加載。由于JS腳本的執(zhí)行時(shí)間往往較長(zhǎng),因此當(dāng)網(wǎng)頁(yè)中的JS腳本較多時(shí),會(huì)大大增加網(wǎng)頁(yè)的加載時(shí)間,極大地降低網(wǎng)頁(yè)打開(kāi)速度。為了提高網(wǎng)頁(yè)打開(kāi)速度,可以對(duì)網(wǎng)頁(yè)中的各JS腳本進(jìn)行延遲加載,即在網(wǎng)頁(yè)加載完成后再對(duì)網(wǎng)頁(yè)中的各JS腳本進(jìn)行加載。由于各JS腳本之間可能存在執(zhí)行依賴,如果不按照各JS腳本的腳本執(zhí)行順序執(zhí)行,將會(huì)出現(xiàn)未定義錯(cuò)誤或邏輯錯(cuò)誤,因此還需要保證各JS腳本按照其腳本執(zhí)行順序進(jìn)行執(zhí)行,例如普遍采用的串行下載方式。具體的,當(dāng)監(jiān)聽(tīng)到網(wǎng)頁(yè)加載完成的相應(yīng)事件時(shí),可以按照腳本執(zhí)行順序?qū)λ写舆t加載的JS腳本依次進(jìn)行如下處理:基于JS腳本的URL(Uniform Resource Locator,統(tǒng)一資源定位符)地址創(chuàng)建該JS腳本的腳本標(biāo)簽,將腳本標(biāo)簽插入到網(wǎng)頁(yè)的HTML(HyperText Markup Language,超文本標(biāo)記語(yǔ)言)文檔,以觸發(fā)網(wǎng)頁(yè)瀏覽器對(duì)該JS腳本的下載及執(zhí)行,之后,當(dāng)監(jiān)聽(tīng)到該JS腳本執(zhí)行完畢時(shí),再對(duì)下一個(gè)JS腳本重復(fù)上述處理,直至所有待延遲加載的JS腳本執(zhí)行完畢。
在實(shí)現(xiàn)本發(fā)明的過(guò)程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問(wèn)題:
在上述串行下載方式中,網(wǎng)頁(yè)瀏覽器必須按照腳本執(zhí)行順序?qū)W(wǎng)頁(yè)中的各JS腳本一個(gè)一個(gè)地進(jìn)行下載,且后一個(gè)JS腳本需要在前一個(gè)JS腳本執(zhí)行完畢后才可以進(jìn)行下載,耗費(fèi)了大量的時(shí)間用于JS腳本的下載,導(dǎo)致網(wǎng)頁(yè)瀏覽器需要較長(zhǎng)時(shí)間才可以加載完成JS腳本,故而JS腳本的延遲加載效率較低。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明實(shí)施例提供了一種延遲加載JS腳本的方法和裝置。所述技術(shù)方案如下:
第一方面,提供了一種延遲加載JS腳本的方法,所述方法包括:
判斷目標(biāo)瀏覽器是否支持async屬性的按序執(zhí)行功能;
如果支持,則基于待延遲加載的各個(gè)JS腳本的URL地址創(chuàng)建每個(gè)所述JS腳本的腳本標(biāo)簽,并對(duì)每個(gè)所述腳本標(biāo)簽設(shè)置async=false;
按照各個(gè)所述JS腳本的腳本執(zhí)行順序,依次將每個(gè)所述腳本標(biāo)簽插入到HTML文檔,以使所述目標(biāo)瀏覽器并行下載各個(gè)所述JS腳本,并按照所述腳本執(zhí)行順序執(zhí)行每個(gè)所述JS腳本。
進(jìn)一步的,所述判斷目標(biāo)瀏覽器是否支持async屬性的按序執(zhí)行功能,包括:
獲取記錄有不支持async屬性的按序執(zhí)行功能的瀏覽器的預(yù)設(shè)瀏覽器名單;
如果所述預(yù)設(shè)瀏覽器名單中存在所述目標(biāo)瀏覽器,則判斷所述目標(biāo)瀏覽器不支持async屬性的按序執(zhí)行功能,否則判斷所述目標(biāo)瀏覽器支持async屬性的按序執(zhí)行功能。
進(jìn)一步的,所述方法還包括:
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于網(wǎng)宿科技股份有限公司,未經(jīng)網(wǎng)宿科技股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811224627.X/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- JS文件處理方法和裝置
- 一種JS代碼的測(cè)試方法、存儲(chǔ)介質(zhì)、設(shè)備和系統(tǒng)
- 一種JS代碼的測(cè)試方法、存儲(chǔ)介質(zhì)、設(shè)備和系統(tǒng)
- 分布式的JS文件篡改監(jiān)控方法、系統(tǒng)、設(shè)備及存儲(chǔ)介質(zhì)
- 在IOS應(yīng)用內(nèi)調(diào)用函數(shù)的方法及系統(tǒng)
- 一種可擴(kuò)展的游戲構(gòu)建方法、游戲運(yùn)行方法和存儲(chǔ)介質(zhì)
- 一種提高腳本的加載效率的方法及終端
- 一種應(yīng)用程序依賴的JS代碼與原生庫(kù)兼容的方法及終端
- JS代碼防重復(fù)注入方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)
- 原生應(yīng)用調(diào)用JS的方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 腳本處理方法及裝置
- 一種實(shí)現(xiàn)腳本引擎的系統(tǒng)及方法
- 代理自動(dòng)配置腳本的處理方法及代理自動(dòng)配置腳本服務(wù)器
- 一種腳本執(zhí)行方法、裝置及計(jì)算設(shè)備
- 腳本轉(zhuǎn)換方法、裝置、計(jì)算機(jī)設(shè)備及存儲(chǔ)介質(zhì)
- 性能測(cè)試平臺(tái)腳本存儲(chǔ)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)
- 一種實(shí)現(xiàn)測(cè)試腳本驗(yàn)證的方法及系統(tǒng)
- 結(jié)構(gòu)化查詢語(yǔ)言腳本審查方法及相關(guān)設(shè)備
- 基于FitNesse框架的數(shù)據(jù)驅(qū)動(dòng)腳本庫(kù)的方法、系統(tǒng)及介質(zhì)
- 一種腳本審計(jì)方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





