[發明專利]一種延遲加載JS腳本的方法和裝置有效
| 申請號: | 201811224627.X | 申請日: | 2018-10-19 |
| 公開(公告)號: | CN109343908B | 公開(公告)日: | 2020-12-29 |
| 發明(設計)人: | 鄭家興 | 申請(專利權)人: | 網宿科技股份有限公司 |
| 主分類號: | G06F9/445 | 分類號: | G06F9/445;G06F16/955 |
| 代理公司: | 北京華智則銘知識產權代理有限公司 11573 | 代理人: | 劉榮鑫 |
| 地址: | 201800 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 延遲 加載 js 腳本 方法 裝置 | ||
1.一種延遲加載JS腳本的方法,其特征在于,所述方法包括:
判斷目標瀏覽器是否支持async屬性的按序執行功能;
如果支持,則基于待延遲加載的各個JS腳本的URL地址創建每個所述JS腳本的腳本標簽,并對每個所述腳本標簽設置async=false;
按照各個所述JS腳本的腳本執行順序,依次將每個所述腳本標簽插入到HTML文檔,以使所述目標瀏覽器并行下載各個所述JS腳本,并按照所述腳本執行順序執行每個所述JS腳本,其中,各個所述JS腳本的腳本執行順序基于所述HTML文檔中各個所述JS腳本的URL地址的記錄順序獲得;
如果不支持,則根據所述目標瀏覽器的類型和待延遲加載的各個所述JS腳本的URL地址,為每個所述JS腳本創建腳本標簽或者image標簽,以并行下載各個所述JS腳本,并根據所述腳本執行順序生成隊列,以使所述目標瀏覽器根據所述隊列按序執行每個所述JS腳本。
2.根據權利要求1所述的方法,其特征在于,所述判斷目標瀏覽器是否支持async屬性的按序執行功能,包括:
獲取記錄有不支持async屬性的按序執行功能的瀏覽器的預設瀏覽器名單;
如果所述預設瀏覽器名單中存在所述目標瀏覽器,則判斷所述目標瀏覽器不支持async屬性的按序執行功能,否則判斷所述目標瀏覽器支持async屬性的按序執行功能。
3.根據權利要求1所述的方法,其特征在于,所述方法還包括:
如果所述目標瀏覽器不支持async屬性的按序執行功能,且所述目標瀏覽器為IE瀏覽器,則基于待延遲加載的各個所述JS腳本的URL地址創建每個所述JS腳本的腳本標簽,并按照所述腳本執行順序將每個所述腳本標簽放入隊列,以使所述目標瀏覽器并行下載各個所述JS腳本;
當監聽到隊列中位于隊首的腳本標簽對應的所述JS腳本的腳本下載狀態為下載完成時,將所述位于隊首的腳本標簽插入到所述HTML文檔,以使所述目標瀏覽器執行所述處于隊首的腳本標簽對應的所述JS腳本;
如果監聽到所述處于隊首的腳本標簽對應的所述JS腳本執行完畢,則將所述隊列中所述處于隊首的腳本標簽的下一個所述腳本標簽插入到所述HTML文檔。
4.根據權利要求1所述的方法,其特征在于,所述方法還包括:
如果所述目標瀏覽器不支持async屬性的按序執行功能,且所述目標瀏覽器為非IE瀏覽器,則基于待延遲加載的各個所述JS腳本的URL地址創建各個用于下載所述JS腳本的image標簽,以使所述目標瀏覽器基于各個所述image標簽并行下載各個所述JS腳本;
基于待延遲加載的各個所述JS腳本的URL地址創建每個所述JS腳本的腳本標簽,按照所述腳本執行順序將每個所述腳本標簽放入隊列;
當監聽到隊列中位于隊首的腳本標簽對應的所述JS腳本的腳本下載狀態為下載完成時,將所述位于隊首的腳本標簽插入到所述HTML文檔,以使所述目標瀏覽器執行所述處于隊首的腳本標簽對應的所述JS腳本;
如果監聽到所述處于隊首的腳本標簽對應的所述JS腳本執行完畢,則將所述隊列中所述處于隊首的腳本標簽的下一個所述腳本標簽插入到所述HTML文檔。
5.根據權利要求3或4所述的方法,其特征在于,所述如果監聽到所述處于隊首的腳本標簽對應的所述JS腳本執行完畢,則將所述隊列中所述處于隊首的腳本標簽的下一個所述腳本標簽插入到所述HTML文檔,包括:
如果監聽到所述處于隊首的腳本標簽對應的所述JS腳本執行完畢,則在所述隊列中刪除所述處于隊首的腳本標簽;
當監聽到隊列中當前位于隊首的腳本標簽對應的所述JS腳本的腳本下載狀態為下載完成時,將所述當前位于隊首的腳本標簽插入到所述HTML文檔。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于網宿科技股份有限公司,未經網宿科技股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201811224627.X/1.html,轉載請聲明來源鉆瓜專利網。





