CN113221097A - 一种代码执行方法、装置、电子终端及存储介质 - Google Patents
一种代码执行方法、装置、电子终端及存储介质 Download PDFInfo
- Publication number
- CN113221097A CN113221097A CN202110505584.8A CN202110505584A CN113221097A CN 113221097 A CN113221097 A CN 113221097A CN 202110505584 A CN202110505584 A CN 202110505584A CN 113221097 A CN113221097 A CN 113221097A
- Authority
- CN
- China
- Prior art keywords
- code
- sandbox
- type
- execution
- isolation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 244000035744 Hura crepitans Species 0.000 claims abstract description 129
- 238000002955 isolation Methods 0.000 claims abstract description 64
- 230000008569 process Effects 0.000 claims abstract description 45
- 230000006870 function Effects 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 10
- 230000003993 interaction Effects 0.000 abstract description 11
- 238000005516 engineering process Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例公开了一种代码执行方法、装置、电子终端及存储介质,该方法包括:对单页应用架构的网页中子应用的目标代码进行加载;利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;在网页的父框架下,执行包裹了沙箱对象的目标代码,通过沙箱对象,对目标代码执行过程中属于隔离操作类型的执行操作进行拦截,以及将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。通过利用沙箱对象的隔离特性,避免了子应用运行冲突。通过在网页的父框架下运行目标代码,可以使子应用共享网页的DOM树,解决了子应用交互区域受限的问题,提高了交互体验。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种代码执行方法、装置、电子终端及存储介质。
背景技术
随着网络技术的迅速发展,网页结构也日益复杂。例如,可以基于单页应用(single page web application,SPA)架构技术,实现网页包含多个模块,其中每个模块可看成是子应用。通常,浏览器可为每个网页提供独立的宿主环境,而网页中各子应用的代码都需在当前网页宿主环境中运行,这就容易导致子应用间运行时发生大量的冲突,比如全局变量污染、全局事件监听等。
现有技术中,可通过采用iframe内联框架技术,隔离各子应用的运行环境,避免子应用间运行冲突。
然而,采用iframe内联框架技术,也带来了至少如下的技术问题:若在iframe内联框架中执行子应用的代码,则子应用的交互区域需局限在iframe框架限定的区域范围内,导致交互体验差(例如,子应用的弹窗需要局限在所属区域内部,超出区域部分将隐藏,导致弹窗无法全屏)。
发明内容
有鉴于此,本发明实施例提供了一种代码执行方法、装置、电子终端及存储介质,能够在避免子应用运行冲突的基础上,提高交互体验。
第一方面,本发明实施例提供了一种代码执行方法,包括:
对单页应用架构的网页中子应用的目标代码进行加载;
利用预先构建的沙箱对象包裹所述目标代码;其中,所述沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;
在所述网页的父框架下,执行包裹了所述沙箱对象的目标代码,通过所述沙箱对象,对所述目标代码执行过程中属于所述隔离操作类型的执行操作进行拦截,以及将所述目标代码执行过程中属于所述隔离数据类型的生成数据,记录至所述沙箱对象内部。
第二方面,本发明实施例还提供了一种代码执行装置,包括:
代码获取模块,用于对单页应用架构的网页中子应用的目标代码进行加载;
代码包裹模块,用于利用预先构建的沙箱对象包裹所述目标代码;其中,所述沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;
代码执行模块,用于在所述网页的父框架下,执行包裹了所述沙箱对象的目标代码,通过所述沙箱对象,对所述目标代码执行过程中属于所述隔离操作类型的执行操作进行拦截,以及将所述目标代码执行过程中属于所述隔离数据类型的生成数据,记录至所述沙箱对象内部。
第三方面,本发明实施例还提供了一种电子终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如本申请任意实施例提供的代码执行方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请任意实施例提供的代码执行方法。
本发明实施例提供的一种代码执行方法、装置、电子终端及存储介质,该代码执行方法包括:对单页应用架构的网页中子应用的目标代码进行加载;利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;在网页的父框架下,执行包裹了沙箱对象的目标代码,通过沙箱对象,对目标代码执行过程中属于隔离操作类型的执行操作进行拦截,以及将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。
通过利用沙箱对象的隔离特性,能够在沙箱对象包裹的目标代码执行过程中,根据预先定义的隔离操作类型,对执行操作进行拦截,以及根据预先定义的的隔离数据类型,对生成数据进行记录,从而保证了子子应用之间隔离运行,避免了子应用间运行冲突。此外,通过在网页的父框架下运行目标代码,可以使子应用共享网页的DOM树,解决了子应用交互区域受限的问题,提高了交互体验。
附图说明
图1是本发明实施例一提供的一种代码执行方法的流程示意图;
图2是本发明实施例一提供的一种代码执行方法中网页的架构示意图;
图3是本发明实施例二提供的一种代码执行方法的流程示意图;
图4是本发明实施例三提供的一种代码执行装置的结构示意图;
图5是本发明实施例四提供的一种电子终端的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下将参照本发明实施例中的附图,通过实施方式清楚、完整地描述本发明的技术方案,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。下述各实施例中,每个实施例中同时提供了可选特征和示例,实施例中记载的各个特征可进行组合,形成多个可选方案,不应将每个编号的实施例仅视为一个技术方案。
实施例一
图1是本发明实施例一提供的一种代码执行方法的流程示意图。本实施例可适用于执行SPA架构的网页中各子应用的目标代码的情况。该方法可以由本发明实施例提供的代码执行装置来执行,该装置可采用软件和/或硬件的方式实现,可配置于浏览器中,且可随浏览器安装于电子终端中,例如安装于计算机终端中。
参见图1,本实施例提供的代码执行方法,包括如下步骤:
S110、对单页应用架构的网页中子应用的目标代码进行加载。
本发明实施例中,目标代码可以为JavaScript格式的代码(可称为JS代码),从而不仅便于目标代码被沙箱对象包裹,还有助于在目标代码执行时,通过沙箱对象进行相关操作的拦截和相关数据的捕获和记录等,以实现更好的沙箱隔离效果。
其中,网页的父框架(可以称为容器),可以认为是网页最顶层、最外层的框架,且父框架可用于承载子应用。在执行本实施例提供的代码执行方法之前,可在SPA架构的网页的父框架中,注册各子应用的检索文件的地址和路由映射等。相应的,当网页父框架中加载到子应用的路由时,可通过文件加载器(例如System JS),基于预先注册的路由映射和检索文件的地址,从服务器获取相应子应用的JS文件,并获取到其中的JS代码,从而实现对子应用的目标代码的加载。
S120、利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型。
其中,可以预先通过window.Proxy语句构建虚假的window对象,即构建沙箱对象(可称为sandbox)。
示例性的,可通过const sandbox=new Proxy({},{})语句构建沙箱对象。其中,const表示沙箱对象为静态变量;sandbox为沙箱对象的名称;new Proxy用于新建沙箱对象,且({},{})中可包含定义的隔离操作类型和隔离数据类型。其中,隔离操作类型可用于表征,目标代码运行过程中,期望与父框架进行隔离的执行操作的类型;其中,隔离数据类型可用于表征,目标代码运行过程中,期望与父框架中的数据进行隔离的生成数据的类型。
其中,可以通过window.with语句实现利用沙箱对象包裹目标代码,生成被包裹后的代码。
示例性的,可通过const wrapped_code=`with(sandbox){${js_code}}`语句,将沙箱对象包裹在目标代码外层。其中,const表示被包裹后的代码为静态变量;wrapped_code为被包裹后的代码的名称;${js_code}为目标代码;with(sandbox){},用于实现将目标代码包裹至沙箱对象。
S130、在网页的父框架下,执行包裹了沙箱对象的目标代码,通过沙箱对象,对目标代码执行过程中属于隔离操作类型的执行操作进行拦截,以及将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。
其中,可以在网页的父框架下,通过new Function语句执行包裹了沙箱对象的目标代码,即执行被包裹后的代码。
示例性的,可通过const fn=new Function(wrapped_code);fn();语句执行被包裹后的代码。其中,const表示被包裹后的代码为静态变量;fn为新建函数的名称;newFunction(wrapped_code),用于将被包裹后的代码转换为函数。通过执行fn(),可以实现执行被包裹后的代码。
通过在在网页的父框架下,执行被包裹后的代码,能够实现在目标代码执行过程中,通过沙箱对象对目标代码执行中的相关操作进行劫持,以及对相关数据进行捕获和记录等,以实现将目标代码限制在沙箱对象内部运行,从而实现了目标代码的运行隔离,避免了子应用间运行冲突。
传统方案中,采用iframe内联框架技术隔离各子应用的运行环境时,iframe内联框架需要将子应用的文档对象模型(Document Object Model,DOM)元素从网页父框架的DOM树中划分出来。若在iframe内联框架中执行子应用的代码,则子应用DOM元素的渲染区域,需局限在iframe框架限定的区域范围内。例如,子应用的弹窗需要局限在所属区域内部,超出区域部分将隐藏,使得弹窗无法全屏,从而导致用户的交互体验差。
然而,采用本发明实施例提供的沙箱对象隔离各子应用的运行环境时,各目标代码仍在网页父框架下运行,在运行过程中各目标代码的DOM树可插入父框架原有的DOM树中。由于各目标代码共享了同一个DOM树,各子应用的DOM元素的渲染区域不受限制。例如,子应用的弹窗可实现全屏呈现,从而提高了用户的交互体验差。
此外,传统方案中,采用iframe内联框架技术隔离各子应用的运行环境时,受iframe内联框架技术的限制,父框架与iframe内联框架通信复杂,导致子应用间通信困难。
然而,采用本发明实施例提供的沙箱对象,可以预先定义目标代码运行过程中,需要隔离的隔离操作类型和隔离数据类型。由于各目标代码在同一个JS数组环境中,当需要隔离的隔离操作类型不包含通信接口的调用操作时,各子应用间的通信可以不受限制,从而可以实现子应用间更为便捷的通信。
综上所述,本发明实施例提供的执行方法,非常适用于现有技术中主流的SPA架构的网页中子应用的执行。通过为子应用提供用于运行隔离的沙箱对象,可替代传统的iframe内联框架技术,实现各子应用运行环境互相隔离、保持独立,同时获得更好的用户体验和更方便的框架通信机制。
在一些可选的实施方式中,若加载多个目标代码,则利用预先构建的沙箱对象包裹目标代码,包括:利用与目标代码的数量相同数量的预先构建的沙箱对象,分别包裹各目标代码。
在这些可选的实施方式中,当SPA架构的网页中同时执行多个子应用时,可对多个子应用的目标代码进行加载。相应的,可以利用与目标代码的数量相同数量的预先构建的沙箱对象,分别包裹各目标代码。从而可以实现,在同一网页的父框架下,多个子应用被限制在各自的沙箱对象中,同时独立地被执行。
示例性的,图2是本发明实施例一提供的一种代码执行方法中网页的架构示意图。参见图2,容器可认为是网页的父框架,用于各子应用。当容器中承载了3个目标代码时,可利用3个沙箱对象分别对3个目标代码进行包裹。从而,实现了3个子应用的运行隔离,避免子应用的冲突。可以理解的是,容器中可承载的子应用数量不限于3个,上述举例仅为示例性描述,不作为限制。
在一些可选的实施方式中,代码执行方法还包括:接收用户输入的目标代码,并利用预先构建的沙箱对象包裹用户输入的目标代码。
在这些可选的实施方式中,还可以利用沙箱对象,对用户输入的任意一段要被执行的JS代码进行包裹,以实现输入代码的隔离运行,丰富了执行方法的应用场景,提高了执行方法的适用性和灵活性。
本发明实施例提供的一种代码执行方法,对单页应用架构的网页中子应用的目标代码进行加载;利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;在网页的父框架下,执行包裹了沙箱对象的目标代码,通过沙箱对象,对目标代码执行过程中属于隔离操作类型的执行操作进行拦截,以及将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。
通过利用沙箱对象的隔离特性,能够在沙箱对象包裹的目标代码执行过程中,根据预先定义的隔离操作类型,对执行操作进行拦截,以及根据预先定义的的隔离数据类型,对生成数据进行记录,从而保证了子子应用之间隔离运行,避免了子应用间运行冲突。此外,通过在网页的父框架下运行目标代码,可以使子应用共享网页的DOM树,解决了子应用交互区域受限的问题,提高了交互体验。
实施例二
本实施例提供的代码执行方法,能够与上述实施例中所提供的代码执行方法中各个可选方案相结合。本实施例提供的生代码执行方法,对拦截执行操作和记录生成数据的步骤进行了详细描述,能够通过沙箱对象对目标代码的执行操作进行选择性隔离,以及对生成数据进行捕获和记录,实现将子应用限制在沙箱对象内部运行,避免与其他子应用产生冲突。此外,还可以在目标代码执行完成时,通过沙箱对象对记录的生成数据进行销毁,从而可以提高网页运行稳定性和运行速度。
图3是本发明实施例二提供的一种代码执行方法的流程示意图。参见图3,本实施例提供的代码执行方法,包括如下步骤:
S310、对单页应用架构的网页中子应用的目标代码进行加载。
S320、利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型。
S330、在网页的父框架下,执行包裹了沙箱对象的目标代码。
S341、通过沙箱对象,对目标代码执行过程中属于预设全局变量处理类型的执行操作进行拦截。
其中,隔离操作类型可以包括但不限于,预设全局变量处理类型和预设函数调用类型。其中,预设全局变量处理类型,可以表征在目标代码执行过程中,不可以对预设全局变量进行操作的类型。预设函数调用类型,可以表征在目标代码执行过程中,不可以对预设函数进行调用的类型。
其中,预设全局变量处理类型,至少包括下述一项:预设全局变量的访问类型和定义类型。从而,通过沙箱对象可以实现目标代码执行过程中,对预设全局变量的访问操作进行劫持,以灵活控制沙箱对象中的目标代码可以访问的全局变量和不可以访问的全局变量。并且,通过沙箱对象还可以实现目标代码执行过程中,对预设全局变量的定义操作进行劫持,以避免与父框架下的全局变量产生冲突,或全局变量被其他子应用引用等造成的全局变量污染。
此外,预设全局变量处理类型,并不限于上述的预设全局变量的访问类型和定义类型,例如还可以包括预设全局变量的赋值类型等,以使沙箱对象可以对其他属于预设全局变量处理类型的执行操作进行拦截。
S342、通过沙箱对象,对目标代码执行过程中属于预设函数调用类型的执行操作进行拦截。
其中,对目标代码执行过程中属于预设函数调用类型的执行操作进行拦截,可以包括但不限于:对定时器的setTimeout、setInterval的函数调用进行劫持;对事件监听器window.addEventListener的监听函数进行劫持;对浏览器提供的函数调(例如appendChild函数调用、history函数调用等)进行劫持。
通过沙箱对象,对属于预设函数调用类型的执行操作进行拦截,可以使目标代码限制在沙箱对象内部运行。
S343、通过沙箱对象,将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。
其中,步骤S341、步骤S342和步骤S343之间为和/或的关系,即可以执行其中任意一个或多个步骤,在此不作限制。
其中,隔离数据类型,包括但不限于下述至少一项:全局变量类型、定时器类型、事件监听器类型和文档对象模型(DOM)元素类型。从而,通过沙箱对象可以实现目标代码执行过程中,将定义的全局变量、生成的定时器及相关数据、生成的事件监听器及相关数据,和DOM元素等,记录在沙箱对象内部。
通过将上述数据记录至沙箱对象内部,可以在目标对象运行过程中,从沙箱对象中对上述数据进行查找、赋值等操作,以有助于目标代码顺利执行。
S350、在包裹有沙箱对象的目标代码执行完成时,通过沙箱对象,将记录至沙箱对象内部生成数据进行销毁。
传统方案中,采用iframe内联框架技术隔离各子应用的运行环境时,执行一段JS代码会产生很多全局变量、定时器、事件监听器和DOM元素等数据。这些数据在代码执行完成之后没有很好的办法销毁掉,导致网页应用程序的稳定性变差,运行速度变慢的问题。
而本实施例中,在目标代码执行完成时,还可以通过沙箱对象,对记录的生成数据进行销毁。例如,在目标代码执行完成时,删除记录的全局变量、记录的定时器及相关数据、记录的事件监听器及相关数据事件监听,和DOM元素等。从而,可以保证网页子应用的稳定性,以及网页运行速度。
本发明实施例提供的代码执行方法,对拦截执行操作和记录生成数据的步骤进行了详细描述,能够通过沙箱对象对目标代码的执行操作进行选择性隔离,以及对生成数据进行捕获和记录,实现将子应用限制在沙箱对象内部运行,避免与其他子应用产生冲突。此外,还可以在目标代码执行完成时,通过沙箱对象对记录的生成数据进行销毁,从而可以提高网页运行稳定性和运行速度。
本实施例提供的代码执行方法与上述实施例提供的代码执行方法属于同一技术构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且相同的技术特征在本实施例与上述实施例中具有相同的有益效果。
实施例三
图4是本发明实施例三提供的一种代码执行装置的结构示意图。本实施例可适用于执行SPA架构的网页中各子应用的目标代码的情况。应用该代码执行置可以实现本发明实施例所提供的代码执行方法。
参见图4,本发明提供的代码执行装置,包括:
代码获取模块410,用于对单页应用架构的网页中子应用的目标代码进行加载;
代码包裹模块420,用于利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;
代码执行模块430,用于在网页的父框架下,执行包裹了沙箱对象的目标代码,通过沙箱对象,对目标代码执行过程中属于隔离操作类型的执行操作进行拦截,以及将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。
在一些可选的实现方式中,代码执行模块,包括:
拦截单元,用于通过沙箱对象,对目标代码执行过程中属于预设全局变量处理类型的执行操作进行拦截;
其中,预设全局变量处理类型,至少包括下述一项:预设全局变量的访问类型和定义类型。
在一些可选的实现方式中,拦截单元还用于:
通过沙箱对象,对目标代码执行过程中属于预设函数调用类型的执行操作进行拦截。
在一些可选的实现方式中,隔离数据类型,包括下述至少一项:全局变量类型、定时器类型、事件监听器类型和文档对象模型元素类型。
在一些可选的实现方式中,代码执行模块,还包括:
销毁单元,用于在包裹有沙箱对象的目标代码执行完成时,通过沙箱对象,将记录至沙箱对象内部生成数据进行销毁。
在一些可选的实现方式中,若代码获取模块加载多个目标代码,则代码包裹模块,还用于:利用与目标代码的数量相同数量的预先构建的沙箱对象,分别包裹各目标代码。
在一些可选的实现方式中,代码获取模块,还用于接收用户输入的目标代码;相应的,代码包裹模块还用于,利用预先构建的沙箱对象包裹用户输入的目标代码。
本发明实施例所提供的代码执行装置可执行本发明实施例所提供的代码执行方法,具备执行方法相应的功能模块和有益效果。未详尽描述的技术细节,可参见本发明实施例所提供的代码执行方法。
实施例四
图5是本发明实施例四提供的一种电子终端的结构示意图。图5示出了适于用来实现本发明实施方式的示例性电子终端12的框图。图5显示的电子终端12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。设备12典型的是承担代码执行功能的电子终端。
如图5所示,电子终端12以通用计算设备的形式表现。电子终端12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,存储器28,连接不同组件(包括存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture,ISA)总线,微通道体系结构(Micro Channel Architecture,MCA)总线,增强型ISA总线、视频电子标准协会(Video Electronics Standards Association,VESA)局域总线以及外围组件互连(Peripheral Component Interconnect,PCI)总线。
电子终端12典型地包括多种计算机可读介质。这些介质可以是任何能够被电子终端12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器28可以包括易失性存储器形式的计算机装置可读介质,例如随机存取存储器(Random Access Memory,RAM)30和/或高速缓存存储器32。电子终端12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如只读光盘(Compact Disc-Read Only Memory,CD-ROM)、数字视盘(Digital Video Disc-Read Only Memory,DVD-ROM)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品40,该程序产品40具有一组程序模块42,这些程序模块被配置以执行本发明各实施例的功能。程序产品40,可以存储在例如存储器28中,这样的程序模块42包括但不限于一个或者多个子应用、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
电子终端12也可以与一个或多个外部设备14(例如键盘、鼠标、摄像头等和显示器)通信,还可与一个或者多个使得用户能与该电子终端12交互的设备通信,和/或与使得该电子终端12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子终端12还可以通过网络适配器20与一个或者多个网络(例如局域网(Local Area Network,LAN),广域网WideArea Network,WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子终端12的其它模块通信。应当明白,尽管图中未示出,可以结合电子终端12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、磁盘阵列(Redundant Arrays of Independent Disks,RAID)装置、磁带驱动器以及数据备份存储装置等。
处理器16通过运行存储在存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明上述实施例所提供的代码执行方法,包括:
对单页应用架构的网页中子应用的目标代码进行加载;
利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;
在网页的父框架下,执行包裹了沙箱对象的目标代码,通过沙箱对象,对目标代码执行过程中属于隔离操作类型的执行操作进行拦截,以及将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。
当然,本领域技术人员可以理解,处理器还可以实现本发明实施例所提供的代码执行方法的技术方案。
实施例五
本发明实施例五还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例所提供的代码执行方法,该方法包括:
对单页应用架构的网页中子应用的目标代码进行加载;
利用预先构建的沙箱对象包裹目标代码;其中,沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;
在网页的父框架下,执行包裹了沙箱对象的目标代码,通过沙箱对象,对目标代码执行过程中属于隔离操作类型的执行操作进行拦截,以及将目标代码执行过程中属于隔离数据类型的生成数据,记录至沙箱对象内部。
当然,本发明实施例所提供的一种计算机可读存储介质,其上存储的计算机程序不限于如上的方法操作,还可以执行本发明实施例所提供的代码执行方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的装置、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行装置、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行装置、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种代码执行方法,其特征在于,包括:
对单页应用架构的网页中子应用的目标代码进行加载;
利用预先构建的沙箱对象包裹所述目标代码;其中,所述沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;
在所述网页的父框架下,执行包裹了所述沙箱对象的目标代码,通过所述沙箱对象,对所述目标代码执行过程中属于所述隔离操作类型的执行操作进行拦截,以及将所述目标代码执行过程中属于所述隔离数据类型的生成数据,记录至所述沙箱对象内部。
2.根据权利要求1所述的方法,其特征在于,通过所述沙箱对象,对所述目标代码执行过程中属于所述隔离操作类型的执行操作进行拦截,包括:
通过所述沙箱对象,对所述目标代码执行过程中属于预设全局变量处理类型的执行操作进行拦截;
其中,所述预设全局变量处理类型,至少包括下述一项:预设全局变量的访问类型和定义类型。
3.根据权利要求1所述的方法,其特征在于,通过所述沙箱对象,对所述目标代码执行过程中属于所述隔离操作类型的执行操作进行拦截,包括:
通过所述沙箱对象,对所述目标代码执行过程中属于预设函数调用类型的执行操作进行拦截。
4.根据权利要求1所述的方法,其特征在于,所述隔离数据类型,包括下述至少一项:全局变量类型、定时器类型、事件监听器类型和文档对象模型元素类型。
5.根据权利要求1所述的方法,其特征在于,还包括:
在包裹了所述沙箱对象的目标代码执行完成时,通过所述沙箱对象,将记录至所述沙箱对象内部生成数据进行销毁。
6.根据权利要求1所述的方法,其特征在于,若加载多个目标代码,则利用预先构建的沙箱对象包裹所述目标代码,包括:
利用与目标代码的数量相同数量的预先构建的沙箱对象,分别包裹各目标代码。
7.根据权利要求1所述的方法,其特征在于,还包括:
接收用户输入的目标代码,并利用预先构建的沙箱对象包裹用户输入的目标代码。
8.一种代码执行装置,其特征在于,包括:
代码获取模块,用于对单页应用架构的网页中子应用的目标代码进行加载;
代码包裹模块,用于利用预先构建的沙箱对象包裹所述目标代码;其中,所述沙箱对象在创建时,定义有隔离操作类型和隔离数据类型;
代码执行模块,用于在所述网页的父框架下,执行包裹了所述沙箱对象的目标代码,通过所述沙箱对象,对所述目标代码执行过程中属于所述隔离操作类型的执行操作进行拦截,以及将所述目标代码执行过程中属于所述隔离数据类型的生成数据,记录至所述沙箱对象内部。
9.一种电子终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7中任一所述的代码执行方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的代码执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110505584.8A CN113221097A (zh) | 2021-05-10 | 2021-05-10 | 一种代码执行方法、装置、电子终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110505584.8A CN113221097A (zh) | 2021-05-10 | 2021-05-10 | 一种代码执行方法、装置、电子终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113221097A true CN113221097A (zh) | 2021-08-06 |
Family
ID=77094167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110505584.8A Pending CN113221097A (zh) | 2021-05-10 | 2021-05-10 | 一种代码执行方法、装置、电子终端及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113221097A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816559A (zh) * | 2022-03-07 | 2022-07-29 | 支付宝(杭州)信息技术有限公司 | 模块加载方法、装置、存储介质及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427622A (zh) * | 2018-12-24 | 2020-07-17 | 阿里巴巴集团控股有限公司 | 应用程序中脚本代码的执行方法及装置 |
CN111562910A (zh) * | 2020-05-08 | 2020-08-21 | 上海泛微网络科技股份有限公司 | 一种封装方法及相关设备 |
CN111796823A (zh) * | 2020-06-24 | 2020-10-20 | 北京三快在线科技有限公司 | 页面更新、页面展示的方法、装置及页面维护系统 |
CN112416415A (zh) * | 2020-09-18 | 2021-02-26 | 山东英信计算机技术有限公司 | 一种前端微服务实现方法及相关组件 |
-
2021
- 2021-05-10 CN CN202110505584.8A patent/CN113221097A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427622A (zh) * | 2018-12-24 | 2020-07-17 | 阿里巴巴集团控股有限公司 | 应用程序中脚本代码的执行方法及装置 |
CN111562910A (zh) * | 2020-05-08 | 2020-08-21 | 上海泛微网络科技股份有限公司 | 一种封装方法及相关设备 |
CN111796823A (zh) * | 2020-06-24 | 2020-10-20 | 北京三快在线科技有限公司 | 页面更新、页面展示的方法、装置及页面维护系统 |
CN112416415A (zh) * | 2020-09-18 | 2021-02-26 | 山东英信计算机技术有限公司 | 一种前端微服务实现方法及相关组件 |
Non-Patent Citations (2)
Title |
---|
WINDRUNNERMAX: "Js中Proxy对象", 《HTTPS://CLOUD.TENCENT.COM/DEVELOPER/ARTICLE/1751304?FROM=15425》 * |
宅神KING: "第七期 微前端专场笔记", 《HTTPS://JUEJIN.CN/POST/6844904175290023944》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816559A (zh) * | 2022-03-07 | 2022-07-29 | 支付宝(杭州)信息技术有限公司 | 模块加载方法、装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109634598B (zh) | 一种页面显示方法、装置、设备及存储介质 | |
CN109032706B (zh) | 智能合约执行方法、装置、设备和存储介质 | |
CN109885781B (zh) | 混合页面统一浏览方法、装置、设备和存储介质 | |
CN111680253A (zh) | 页面应用数据包生成方法、装置、计算机设备及存储介质 | |
CN109634587B (zh) | 一种生成入库脚本以及数据入库的方法和设备 | |
CN112395098B (zh) | 应用程序接口调用方法、装置、存储介质和电子设备 | |
CN109241128B (zh) | 一种过期事件自动触发方法及系统 | |
CN114116078A (zh) | 基于微前端的应用数据处理方法、装置、设备及介质 | |
CN114077430A (zh) | 界面生成方法、装置、电子设备及存储介质 | |
CN111813465B (zh) | 一种信息获取方法、装置、介质和设备 | |
CN113204345A (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN107301220B (zh) | 数据驱动视图的方法、装置、设备及存储介质 | |
CN113254136A (zh) | 信息推荐弹窗展示方法、装置、设备和计算机可读介质 | |
CN113761871A (zh) | 富文本渲染方法、装置、电子设备以及存储介质 | |
CN110045952B (zh) | 代码调用方法与装置 | |
CN113221097A (zh) | 一种代码执行方法、装置、电子终端及存储介质 | |
CN109408057B (zh) | 自动生成代码的方法、装置、介质和计算设备 | |
CN110096543B (zh) | 应用程序的数据操作方法、装置、服务器和介质 | |
CN111736825A (zh) | 一种信息展示方法、装置、设备和存储介质 | |
CN110647331A (zh) | 开发工具的获取方法及装置、存储介质、电子设备 | |
US20150310123A1 (en) | Rendering a web element in a web page | |
CN111767111B (zh) | 页面数据处理方法及装置、电子设备和存储介质 | |
CN114490266A (zh) | 一种数据采集方法、装置、设备及存储介质 | |
CN113687880A (zh) | 一种调用组件的方法、装置、设备和介质 | |
CN110753136B (zh) | 域名解析方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210806 |
|
RJ01 | Rejection of invention patent application after publication |