System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种非同源脚本加载方法、装置及存储介质制造方法及图纸_技高网

一种非同源脚本加载方法、装置及存储介质制造方法及图纸

技术编号:40446360 阅读:7 留言:0更新日期:2024-02-22 23:07
本发明专利技术公开了一种非同源脚本加载方法、装置及存储介质,其中方法包括:获取待加载非同源脚本的源地址,将源地址存储在索引数据库中;获取待加载非同源脚本的原始代码文件,并将原始代码文件所对应的二进制对象转换为blob url;基于blob url对应的资源,加载待加载非同源脚本的源地址,其中,资源由当前域的执行上下文生成。本发明专利技术将原始代码文件所对应的二进制对象转换为blob url,blob url对应的资源是由当前域的执行上下文生成,浏览器在加载待加载非同源脚本的源地址时,会判定blob url对应的资源遵循同源策略,从而能够对非同源脚本进行正常加载,能够有效提高浏览器的资源利用率。

【技术实现步骤摘要】

本专利技术涉及计算机,尤其是涉及一种非同源脚本加载方法、装置及存储介质


技术介绍

1、当下浏览器的javascript应用程序编程接口提供了在页面中开启多线程的能力,这为开发者在web应用性能方面的提升提供了非常大的帮助,开启的线程脚本必须与页面同源,即协议、域名、端口号需要一致。在某些场景下,需要加载非同源的线程脚本,但是直接加载非同源脚本会出现跨域问题,导致浏览器无法正常加载非同源脚本。

2、现有的非同源脚本加载方法通常是将编写好的非同源脚本源代码与发出请求的页面绑定在同一个服务器上,以加载非同源脚本,但是源代码与页面绑定在同一个服务器上无法进行资源切割,导致浏览器资源利用率较低。


技术实现思路

1、本专利技术提供一种非同源脚本加载方法、装置及存储介质,以解决现有的非同源脚本加载方法将编写好的非同源脚本源代码与发出请求的页面绑定在同一个服务器上,无法进行资源切割,导致浏览器资源利用率较低的技术问题。

2、本专利技术提供了一种非同源脚本加载方法,包括:

3、获取待加载非同源脚本的源地址,将所述源地址存储在索引数据库中;

4、获取所述待加载非同源脚本的原始代码文件,并将所述原始代码文件所对应的二进制对象转换为blob ur l;

5、基于所述blob ur l对应的资源,加载所述待加载非同源脚本的源地址,其中,所述资源由当前域的执行上下文生成。

6、进一步的,所述获取待加载非同源脚本的源地址,包括:

<p>7、通过全局执行上下文的document.currentscript.src属性获取所述待加载非同源脚本的源地址。

8、进一步的,所述获取所述待加载非同源脚本的原始代码文件,包括:

9、通过fetch api或者xmlhttprequest对象向资源服务器发起网络请求,基于所述网络请求获取得到待加载非同源脚本的原始代码文件。

10、进一步的,所述将所述原始代码文件所对应的二进制对象转换为blob url,包括:

11、在所述原始代码文件所执行的全局上下文中确定一个url对象,基于所述url对象将所述原始代码文件对应的二进制对象转化为blob url。

12、进一步的,所述加载所述待加载非同源脚本的源地址,包括:

13、若当前域的执行上下文引用其他资源的相对路径;

14、通过浏览器对所述相对路径进行解析得到解析路径,所述解析路径包括页面路径和引用路径;

15、基于放置所述其他资源的静态资源服务器的源地址信息,修正所述引用路径;

16、将修正后的引用路径与所述页面路径进行拼接,得到修正后解析路径;

17、加载所述修正后解析路径。

18、本专利技术还提供了一种非同源脚本加载装置,包括:

19、源地址获取模块,用于获取待加载非同源脚本的源地址,将所述源地址存储在索引数据库中;

20、二进制对象转化模块,用于获取所述待加载非同源脚本的原始代码文件,并将所述原始代码文件所对应的二进制对象转换为blob url;

21、脚本加载模块,用于基于所述blob url对应的资源,加载所述待加载非同源脚本的源地址,其中,所述资源由当前域的执行上下文生成。

22、进一步的,所述二进制对象转化模块,还用于:

23、通过fetch api或者xmlhttprequest对象向资源服务器发起网络请求,基于所述网络请求获取得到待加载非同源脚本的原始代码文件

24、进一步的,所述二进制对象转化模块,还用于:

25、在所述原始代码文件所执行的全局上下文中确定一个url对象,基于所述url对象将所述原始代码文件对应的二进制对象转化为blob url

26、进一步的,所述脚本加载模块,还用于:

27、若当前域的执行上下文引用其他资源的相对路径;

28、通过浏览器对所述相对路径进行解析得到解析路径,所述解析路径包括页面路径和引用路径;

29、基于放置所述其他资源的静态资源服务器的源地址信息,修正所述引用路径;

30、将修正后的引用路径与所述页面路径进行拼接,得到修正后解析路径;

31、加载所述修正后解析路径。

32、本专利技术还提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行如上述的非同源脚本加载方法。

33、本专利技术实施例获取所述待加载非同源脚本的原始代码文件,并将所述原始代码文件所对应的二进制对象转换为blob url,所述blob url对应的资源是由当前域的执行上下文生成,不同于其他普通的跨域资源,浏览器在加载待加载非同源脚本的源地址时,会判定blob url对应的资源遵循同源策略,即判定所述待加载非同源脚本的源地址遵循同源策略,从而能够对非同源脚本进行正常加载,本专利技术实施例无需将非同源脚本的源代码与页面绑定在同一个服务器上而实现非同源脚本的加载,从而能够有效提高浏览器中资源的切割效率,进而能够有效提高浏览器的资源利用率。

34、进一步的,本专利技术实施例在当前域的执行上下文引用其他资源的相对路径时,通过浏览器对所述相对路径进行解析得到解析路径,所述解析路径包括页面路径和引用路径,并基于放置所述其他资源的静态资源服务器的源地址信息,修正所述引用路径,从而能够正常加载修正后的解析路径,避免出现引用错误的情况。

本文档来自技高网
...

【技术保护点】

1.一种非同源脚本加载方法,其特征在于,包括:

2.如权利要求1所述的非同源脚本加载方法,其特征在于,所述获取待加载非同源脚本的源地址,包括:

3.如权利要求1所述的非同源脚本加载方法,其特征在于,所述获取所述待加载非同源脚本的原始代码文件,包括:

4.如权利要求1所述的非同源脚本加载方法,其特征在于,所述将所述原始代码文件所对应的二进制对象转换为blob url,包括:

5.如权利要求1所述的非同源脚本加载方法,其特征在于,所述加载所述待加载非同源脚本的源地址,包括:

6.一种非同源脚本加载装置,其特征在于,包括:

7.如权利要求6所述的非同源脚本加载装置,其特征在于,所述二进制对象转化模块,还用于:

8.如权利要求6所述的非同源脚本加载装置,其特征在于,所述二进制对象转化模块,还用于:

9.如权利要求6所述的非同源脚本加载装置,其特征在于,所述脚本加载模块,还用于:

10.一种存储介质,其特征在于,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行如权利要求1至5中任意一项所述的非同源脚本加载方法。

...

【技术特征摘要】

1.一种非同源脚本加载方法,其特征在于,包括:

2.如权利要求1所述的非同源脚本加载方法,其特征在于,所述获取待加载非同源脚本的源地址,包括:

3.如权利要求1所述的非同源脚本加载方法,其特征在于,所述获取所述待加载非同源脚本的原始代码文件,包括:

4.如权利要求1所述的非同源脚本加载方法,其特征在于,所述将所述原始代码文件所对应的二进制对象转换为blob url,包括:

5.如权利要求1所述的非同源脚本加载方法,其特征在于,所述加载所述待加载非同源脚本的源地址,包括:

<...

【专利技术属性】
技术研发人员:李林杰
申请(专利权)人:浩云科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1