[发明专利]一种延迟加载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.vipzhuanli.com/pat/books/201811224627.X/1.html,转载请声明来源钻瓜专利网。