CN109426497B - 数据嵌入方法、装置、系统以及存储介质 - Google Patents

数据嵌入方法、装置、系统以及存储介质 Download PDF

Info

Publication number
CN109426497B
CN109426497B CN201710711651.5A CN201710711651A CN109426497B CN 109426497 B CN109426497 B CN 109426497B CN 201710711651 A CN201710711651 A CN 201710711651A CN 109426497 B CN109426497 B CN 109426497B
Authority
CN
China
Prior art keywords
executed
instruction
attribute
target
preset
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.)
Active
Application number
CN201710711651.5A
Other languages
English (en)
Other versions
CN109426497A (zh
Inventor
王学波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Gridsum Technology Co Ltd
Original Assignee
Beijing Gridsum Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Gridsum Technology Co Ltd filed Critical Beijing Gridsum Technology Co Ltd
Priority to CN201710711651.5A priority Critical patent/CN109426497B/zh
Publication of CN109426497A publication Critical patent/CN109426497A/zh
Application granted granted Critical
Publication of CN109426497B publication Critical patent/CN109426497B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces

Abstract

本发明公开了一种数据嵌入方法、装置、系统以及存储介质,通过获取待执行指令元素,并根据待执行指令元素的类型,创建目标元素,其中,目标元素用于链接预设外部资源,然后将待执行指令元素的预设属性赋值给目标元素,最后,将赋值后的目标元素插入到预设页面的头部元素中。这样,在页面打开时,会先处理位于页面头部的目标元素,由目标元素的属性调取出待执行指令,然后由待执行指令进行页面的相应操作,并可以链接目标元素中指定的外部资源,即,本方案提供的数据嵌入方法,能够使得AngularJS模板中支持HTML标签元素,以使HTML标签正确链接外部资源。除此,本方案首先执行目标元素,即外部资源要先于当前模板被加载,因此,减少了系统启动的模块加载时间。

Description

数据嵌入方法、装置、系统以及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据嵌入方法、装置及系统。
背景技术
随着科技的不断发展,应用的种类也越来越多,其中,模板(Template)是基于AngularJS框架构建的应用的基本要素,通过模板,将上述应用的显示页面进行分隔,形成多个相对独立的组件视图,然后通过组合不同的组件,形成一个完整的页面。
具体的,AngularJS框架中的模板是一种基于DOM的模板(DOM-basedtemplating),通过解析到的指令进行页面的布局更新。例如,AngularJS框架中内置了一些用于进行模板操作的指令,如ngBind、ngIf、ngRepeat、ngShow等,通过这些指令实现对模板中数据的绑定、执行条件判断、循环、控制dom显示或隐藏等语法操作。
然而,发明人发现,AngularJS模板是标准的DOM模板,有些HTML标签元素不能得到支持,如在HTML中用于链接外部资源的标签元素(Script标签和Link标签)。因此,随着HTML的快速发展,如何提供一种数据嵌入方法,能够使得AngularJS模板中支持HTML标签元素,以使HTML标签正确链接外部资源,成为本领域技术人员亟待解决的一大技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的技术方案:
一种数据嵌入方法,包括:
获取待执行指令元素,所述待执行指令元素表征对应资源的载入和执行动作;
根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源;
将所述待执行指令元素的预设属性赋值给所述目标元素;
将所述赋值后的目标元素插入到预设页面的头部元素中。
优选的,所述根据所述待执行指令元素的类型,创建目标元素包括:获取所述待执行指令元素的类型、属性信息和数量;
基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素。
优选的,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素包括:
若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为多个时,则创建全局对象队列,所述全局对象队列中的每个对象对应一个所述待执行指令元素,并按照所述待执行指令元素间的顺序依赖关系进行排序;
基于每个所述待执行指令元素对应的对象的排序,依次根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素还包括:
若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为一个时,根据所述待执行指令元素包括的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述属性信息包括源属性和jsonp属性,相应的,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素,包括:
判断所述待执行指令元素是否包括所述源属性;
若包括,确定具有所述源属性链接的预设可执行javascript文件的可执行脚本(script)元素为所述目标元素,或,确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素。
优选的,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素,还包括:
若所述待执行指令元素不包括所述源属性,进一步判断所述待执行指令元素是否包含所述jsonp属性;
若不包含所述jsonp属性,判断所述待执行脚本元素的源属性中的地址信息是否包括回调函数,若包括,确定具有基于所述回调函数的方法定义的预设jsonp页面信息的可执行脚本(script)元素为所述目标元素,若不包括,将预设回调函数的方法定义写入所述待执行脚本元素的源属性,并确定写入所述预设回调函数的方法定义的可执行脚本元素为所述目标元素;
若包含所述jsonp属性,确定具有所述源属性和所述jsonp属性的可执行脚本元素为所述目标元素。
优选的,所述确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素,包括:
判断所述预设可执行代码是否包括预设语句;
如果是,获取所述可执行脚本元素的前一兄弟节点,并为所述前一兄弟节点定义随机地址,将所述预设语句中的地址替换成所述随机地址。
优选的,还包括:
判断所述待执行指令元素是否包括async属性;
若包括,同时执行具有所述async属性的待执行指令元素对应的所述对象;
若不包括,按照预设执行顺序依次执行所述全局对象队列中每个所述对象。
优选的,所述根据所述待执行指令元素的类型,创建目标元素包括:
若所述待执行指令元素的类型为样式资源(link)元素类型,则创建目标样式资源元素;
相应的,所述将所述待执行指令元素的预设属性赋值给所述目标元素,包括:
将所述目标样式资源元素的超文本引用(href)属性赋值为所述待执行指令元素的超文本引用属性的值,且,确定当前页面与所述超文本引用(href)属性指定的文档的关系为预设样式表。
一种数据嵌入装置,包括:
获取模块,用于获取待执行指令元素,所述待执行指令元素表征对应资源的载入和执行动作;
创建模块,用于根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源;
赋值模块,用于将所述待执行指令元素的预设属性赋值给所述目标元素;
插入模块,用于将所述赋值后的目标元素插入到预设页面的头部元素中。
一种数据嵌入系统,包括:
存储器,用于存储程序;
处理器,用于执行所述程序,所述程序运行时执行任意一项上述的数据嵌入方法。
一种存储介质,存储有程序,所述程序被处理器执行时实现任意一项上述的数据嵌入方法。
借由上述技术方案,本发明提供的一种数据嵌入方法,首先获取待执行指令元素,然后根据所述待执行指令元素的类型,创建目标元素,其中,所述目标元素用于链接预设外部资源,然后将所述待执行指令元素的预设属性赋值给所述目标元素,最后,将所述赋值后的目标元素插入到预设页面的头部元素中。这样,在页面打开时,会先处理位于页面头部的目标元素,由目标元素的属性调取出待执行指令,然后由待执行指令进行页面的相应操作,并可以链接目标元素中指定的外部资源,即,本方案提供的数据嵌入方法,能够使得AngularJS模板中支持HTML标签元素,以使HTML标签正确链接外部资源。
除此,本方案中,首先执行目标元素,即外部资源要先于当前模板被加载,因此,可以将部分模块延迟到模板加载后再进行加载,节省了系统启动前需加载所有模块导致的系统加载时间长的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种数据嵌入方法的流程示意图;
图2示出了本发明实施例提供的又一种数据嵌入方法的流程示意图;
图3示出了本发明实施例提供的又一种数据嵌入方法的流程示意图;
图4示出了本发明实施例提供的又一种数据嵌入方法的流程示意图;
图5示出了本发明实施例提供的又一种数据嵌入方法的流程示意图;
图6示出了本发明实施例提供的一种数据嵌入装置的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种数据嵌入方法,请参阅图1,示出了该一种数据嵌入方法的流程示意图,可以包括:
S1、获取待执行指令元素。
S2、根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源。
正如背景技术所述,AngularJS模板是标准的DOM模板,其是通过指令来完成模板的各项操作,如通过ngBind、ngIf、ngRepeat、ngShow这些指令实现对模板中数据的绑定、执行条件判断、循环、控制dom显示或隐藏等语法操作。然而,目前的AngularJS模板不兼容HTML标签元素,因此本方案提供一种数据嵌入方法,实现AngularJS模板对HTML标签元素的支持。
即,一个页面由多个模板(相对独立的组件视图)构成,而每个模板又通过多个指令进行对应资源的载入和执行,目前,模板不支持HTML类的指令,因此,当待执行指令的类型为HTML标签指令时,需要通过本方案执行后续的步骤,具体的通过创建目标元素,然后实现链接外部资源的目的;而当待执行指令的类型为非HTML标签指令时,无需执行本实施例中的后续步骤,可以直接载入对应资源。
因此,在本实施例中,目标元素是用于链接预设外部资源,而,指令元素表征对应资源的载入和执行动作,即,指令元素中包括目标元素以及非链接外部资源的指令。
具体的,步骤S1首先获取模板中待执行的指令元素,而指令元素按照功能的不同,可以划分成多种类型。因此,步骤S2根据待执行指令元素的类型,创建不同的目标元素,如,当待执行指令元素的类型为可执行脚本(script)元素类型时,创建一个目标可执行脚本(script)元素;当所述待执行指令元素的类型为样式资源(link)元素类型,则创建目标样式资源元素。
需要说明的是,由于本方案是解决HTML标签元素在模板中的兼容问题,因此,在本方案中,步骤S2中,主要判断待执行指令元素的类型是否为HTML标签元素,如果是,则进一步根据指令的类型创建目标元素,如果待执行指令元素不是HTML标签元素,而是目前AngularJS模板能够支持的指令元素,如ngBind指令,则不执行任何后续步骤,即不会创建目标元素。
S3、将所述待执行指令元素的预设属性赋值给所述目标元素。
当创建目标元素后,该目标元素中各属性的值为预设值,此时,本方案需要将所述待执行指令元素的预设属性赋值给所述目标元素。然而,根据HTML标签元素的不同,其包含的属性的种类也不同,如,Script标签包括源属性以及jsonp属性,而,HTML标签包括超文本引用(href)属性。
由于标签元素的不同,本步骤中赋值的过程也不完全相同,具体的,当待执行指令元素的类型为可执行脚本(script)元素类型时,将所述目标可执行脚本元素的源属性赋值为所述待执行指令元素的源属性的值。当所述待执行指令元素的类型为样式资源(link)元素类型,则将所述目标样式资源元素的超文本引用(href)属性赋值为所述待执行指令元素的超文本引用属性的值,且,确定当前页面与所述超文本引用(href)属性指定的文档的关系为预设样式表(stylesheet)。
在对目标元素进行属性赋值后,执行步骤:
S4、将所述赋值后的目标元素插入到预设页面的头部元素中。
发明人发现,angular框架提供了自定义的模块管理系统,而模块的依赖关系决定了被依赖的模块资源要先于当前模版被加载,这就导致了很多资源在系统启动前就要被加载完,使得系统初次启动时较慢。
而本方案是将目标元素插入到页面的头部元素中,在页面打开时,会先处理位于页面头部的目标元素,由目标元素的属性调取出待执行指令,然后由待执行指令进行页面的相应操作,并可以链接目标元素中指定的外部资源,即,本方案提供的数据嵌入方法,能够使得AngularJS模板中支持HTML标签元素,以使HTML标签正确链接外部资源。
又由于系统在开启时,链接到外部资源,使得部分只有在模版中用到的模块被延迟到模版加载后才被加载,节省了系统初始加载时需要加载的资源体量。
在一种可能的实现方式中,对于上述实施例提供的数据嵌入方法,本本实施例在根据所述待执行指令元素的类型,创建目标元素时,具体通过获取所述待执行指令元素的类型、属性信息和数量,然后基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素。
具体的,以待执行指令元素的类型为两类进行说明,如待执行指令元素的类型为可执行脚本(script)元素类型或样式资源(link)元素类型,其中,当所述待执行指令元素的类型为可执行脚本(script)元素类型时,首先判断所述待执行指令元素的各项属性信息,其中,所述属性信息包括源属性以及jsonp属性。然后,基于所述各项属性信息的判断结果,创建目标可执行脚本(script)元素。
需要说明的是,当所述待执行指令元素的类型为可执行脚本(script)元素类型时,根据待执行指令元素的数量不同,本实施例的处理流程也不同,具体为:
若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为多个时,则创建全局对象队列,所述全局对象队列中的每个对象对应一个所述待执行指令元素,并按照所述待执行指令元素间的顺序依赖关系进行排序。并,基于每个所述待执行指令元素对应的对象的排序,依次根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
即,本方案需要首先定义一个全局对象(promise)队列,并为指令定义一个promise对象。由于angular模版可能同时链接多个Script资源,而这多个Script资源存在顺序依赖的关系。
举例来说,在模版中链接了A.js和B.js两个脚本资源,其中B脚本中的处理逻辑依赖A脚本中定义的相关方法,那么在处理A和B资源载入的过程就必须区分先后顺序,即,先下载和执行A脚本资源,然后再下载和执行B脚本资源。
而为了实现HTML标签的执行依赖顺序,在本方案中定义了一个全局promise队列,队列中的每一个promise代表一次资源的载入和执行,这样promise入队的顺序就代表了资源加载的先后顺序,只有靠近队列头部的promise得到了resolve,后面的promise才允许资源下载和执行。
除此,若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为一个时,根据所述待执行指令元素包括的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
在创建了目标元素之后,如图2所示,还包括步骤:
S211、判断所述待执行指令元素是否包括源属性;
S212、若包括,确定具有所述源属性链接的预设可执行javascript文件的可执行脚本(script)元素为所述目标元素,或,确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素。
具体的,待执行指令元素包括源属性以及jsonp属性,步骤S211就是判定该源属性是否需要定义的过程,如果,待执行指令元素包括源属性,即认定无需重新定义源属性,又由于script标签允许通过src属性指定远程服务器上的一个可执行javascript文件,也允许直接在script标签内嵌入可执行代码,因此直接执行步骤S212。
需要说明的是,对于直接在script标签内嵌入可执行代码的情况,需要保证当嵌入的可执行代码中包含document.write的语句时,资源能进行正确的链接。
具体的,document.write语句是表示在当前script嵌入的位置插入一段dom元素,而由于后续步骤S4会将script标签资源嵌入到页面HEAD头部,那么该语句所输出的内容就无法正确的渲染在期望的位置上。
因此,本实施例还提出了一种解决该问题的方法:
判断所述预设可执行代码是否包括预设语句;
如果是,获取所述可执行脚本元素的前一兄弟节点,并为所述前一兄弟节点定义随机地址,将所述预设语句中的地址替换成所述随机地址。
示意性的,首先标示出该script标签的前一个兄弟节点,并为该兄弟节点定义一个唯一的随机id,其次将代码的document.write语句替换为angular.element(document.getElementById(id)).after()。其中id即为第一步所定义的随机id。
除此,如图3所示,若所述待执行指令元素不包括所述源属性,进一步通过步骤S213、判断所述待执行指令元素是否包括所述jsonp属性;
若不包含所述jsonp属性,判断所述待执行脚本元素的源属性中的地址信息是否包括回调函数,若包括,确定具有基于所述回调函数的方法定义的预设jsonp页面信息的可执行脚本(script)元素为所述目标元素,若不包括,将预设回调函数的方法定义写入所述待执行脚本元素的源属性,并确定写入所述预设回调函数的方法定义的可执行脚本元素为所述目标元素。
若包含所述jsonp属性,确定具有所述源属性和所述jsonp属性的可执行脚本元素为所述目标元素。
具体的,该步骤是添加对于通过script标签链接JSONP页面的支持。JSONP页面是第三方系统暴露出的“微系统”接口,它包含了完整的HTML结构、CSS样式和JS处理逻辑。通过JSONP的方式,本方案可以将该“微系统”的界面HTML嵌入到当前script标签所在的位置。
除此,在上述实施例的基础上,发明人考虑到angular模版中嵌入的资源并不都是具有顺序依赖关系,即,有的资源具有相对的独立性,与其它资源没有依赖关系,因此,本实施例对待执行指令元素增加了async属性,通过async属性标示出该资源是否为非依赖性资源,如果是非依赖性资源,则可以同时加载资源,进行并行处理,这样可以加快资源解析速度。具体的,如图4所示,通过如下步骤实现:
S41、判断所述待执行指令元素是否包括async属性;
S42、若包括,同时执行具有所述async属性的待执行指令元素对应的所述对象;
S43、若不包括,按照预设执行顺序依次执行所述全局对象队列中每个所述对象。
即本实施例通过async属性判断待执行指令元素的执行顺序,如,有三个待执行指令元素,其中,两个待执行指令元素包括async属性,那么表征这两个待执行指令元素间没有依赖关系,可以同时执行这两个待执行指令元素对应的对象,而,另一个待执行指令元素中不包含async属性,则表征该待执行指令元素与上一待执行指令元素之间有依赖关系,即,当上一个待执行指令元素中各对象执行完成后,再执行该待执行指令元素。
在另一种可能的实现方式中,如图5所示,对于上述实施例提供的数据嵌入方法,当所述待执行指令元素的类型为样式资源(link)元素类型时,该数据嵌入方法包括步骤:
S51、创建目标样式资源元素。
S52、将所述目标样式资源元素的超文本引用(href)属性赋值为所述待执行指令元素的超文本引用属性的值。
S53、确定当前页面与所述超文本引用(href)属性指定的文档的关系为预设样式表。
S54、将所述目标样式资源元素插入到预设页面的头部元素中。
其中,Rel是relationship的英文缩写,它描述了当前页面与href所指定文档的关系,stylesheet就是样式表的意思。
综上,本发明公开了一种数据嵌入方法、装置及系统,该方法通过首先获取待执行指令元素,并根据待执行指令元素的类型,创建目标元素,其中,目标元素用于链接预设外部资源,然后将待执行指令元素的预设属性赋值给目标元素,最后,将赋值后的目标元素插入到预设页面的头部元素中。这样,在页面打开时,会先处理位于页面头部的目标元素,由目标元素的属性调取出待执行指令,然后由待执行指令进行页面的相应操作,并可以链接目标元素中指定的外部资源,即,本方案提供的数据嵌入方法,能够使得AngularJS模板中支持HTML标签元素,以使HTML标签正确链接外部资源。除此,本方案中首先执行目标元素,即外部资源要先于当前模板被加载,因此,减少了系统启动的模块加载时间。
与上述方法相对应,本发明实施例还提供了一种数据嵌入装置,请参阅图6,示出了该数据嵌入装置的结构示意图,可以包括:
获取模块61、用于获取待执行指令元素,所述待执行指令元素表征对应资源的载入和执行动作;
创建模块62、用于根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源;
赋值模块63、用于将所述待执行指令元素的预设属性赋值给所述目标元素;
插入模块64、用于将所述赋值后的目标元素插入到预设页面的头部元素中。
优选的,创建模块包括:
获取单元,用于获取所述待执行指令元素的类型、属性信息和数量;
创建单元,用于基于所述待执行指令元素的类型、属性信息和数量,创建与所述待执行指令元素的类型相匹配的元素作为目标元素。
优选的,所述创建单元包括:
第一创建子单元,用于若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为多个时,则创建全局对象队列,所述全局对象队列中的每个对象对应一个所述待执行指令元素,并按照所述待执行指令元素间的顺序依赖关系进行排序;
第一确定子单元,用于基于每个所述待执行指令元素对应的对象的排序,依次根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述创建单元还包括:
第二创建子单元,用于若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为一个时,根据所述待执行指令元素包括的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述属性信息包括源属性和jsonp属性,相应的,所述创建模块在根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素时,具体用于:
判断所述待执行指令元素是否包括所述源属性;
若包括,确定具有所述源属性链接的预设可执行javascript文件的可执行脚本(script)元素为所述目标元素,或,确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素。
优选的,所述创建模块还包括:
判断子单元,用于若所述待执行指令元素不包括所述源属性,进一步判断所述待执行指令元素是否包含所述jsonp属性;
若不包含所述jsonp属性,判断所述待执行脚本元素的源属性中的地址信息是否包括回调函数,若包括,确定具有基于所述回调函数的方法定义的预设jsonp页面信息的可执行脚本(script)元素为所述目标元素,若不包括,将预设回调函数的方法定义写入所述待执行脚本元素的源属性,并确定写入所述预设回调函数的方法定义的可执行脚本元素为所述目标元素;
若包含所述jsonp属性,确定具有所述源属性和所述jsonp属性的可执行脚本元素为所述目标元素。
优选的,所述创建模块在确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素时具体用于:
判断所述预设可执行代码是否包括预设语句;
如果是,获取所述可执行脚本元素的前一兄弟节点,并为所述前一兄弟节点定义随机地址,将所述预设语句中的地址替换成所述随机地址。
在上述实施例的基础上,本实施例提供的数据嵌入装置,还包括:
第判断单元,用于判断所述待执行指令元素是否包括async属性;
若包括,同时执行具有所述async属性的待执行指令元素对应的所述对象;
若不包括,按照预设执行顺序依次执行所述全局对象队列中每个所述对象。
除此,所述创建模块在所述根据所述待执行指令元素的类型,创建目标元素时具体用于:
若所述待执行指令元素的类型为样式资源(link)元素类型,则创建目标样式资源元素;
相应的,所述将所述待执行指令元素的预设属性赋值给所述目标元素,包括:
将所述目标样式资源元素的超文本引用(href)属性赋值为所述待执行指令元素的超文本引用属性的值,且,确定当前页面与所述超文本引用(href)属性指定的文档的关系为预设样式表。
所述数据嵌入装置包括处理器和存储器,上述获取模块、赋值模块、赋值模块和插入模块等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来使得AngularJS模板中支持HTML标签元素,以使HTML标签正确链接外部资源。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据嵌入方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据嵌入方法。
本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
一种数据嵌入方法,包括:
获取待执行指令元素,所述待执行指令元素表征对应资源的载入和执行动作;
根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源;
将所述待执行指令元素的预设属性赋值给所述目标元素;
将所述赋值后的目标元素插入到预设页面的头部元素中。
优选的,所述根据所述待执行指令元素的类型,创建目标元素包括:获取所述待执行指令元素的类型、属性信息和数量;
基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素。
优选的,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素包括:
若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为多个时,则创建全局对象队列,所述全局对象队列中的每个对象对应一个所述待执行指令元素,并按照所述待执行指令元素间的顺序依赖关系进行排序;
基于每个所述待执行指令元素对应的对象的排序,依次根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素还包括:
若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为一个时,根据所述待执行指令元素包括的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述属性信息包括源属性和jsonp属性,相应的,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素,包括:
判断所述待执行指令元素是否包括所述源属性;
若包括,确定具有所述源属性链接的预设可执行javascript文件的可执行脚本(script)元素为所述目标元素,或,确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素。
优选的,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素,还包括:
若所述待执行指令元素不包括所述源属性,进一步判断所述待执行指令元素是否包含所述jsonp属性;
若不包含所述jsonp属性,判断所述待执行脚本元素的源属性中的地址信息是否包括回调函数,若包括,确定具有基于所述回调函数的方法定义的预设jsonp页面信息的可执行脚本(script)元素为所述目标元素,若不包括,将预设回调函数的方法定义写入所述待执行脚本元素的源属性,并确定写入所述预设回调函数的方法定义的可执行脚本元素为所述目标元素;
若包含所述jsonp属性,确定具有所述源属性和所述jsonp属性的可执行脚本元素为所述目标元素。
优选的,所述确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素,包括:
判断所述预设可执行代码是否包括预设语句;
如果是,获取所述可执行脚本元素的前一兄弟节点,并为所述前一兄弟节点定义随机地址,将所述预设语句中的地址替换成所述随机地址。
优选的,还包括:
判断所述待执行指令元素是否包括async属性;
若包括,同时执行具有所述async属性的待执行指令元素对应的所述对象;
若不包括,按照预设执行顺序依次执行所述全局对象队列中每个所述对象。
优选的,所述根据所述待执行指令元素的类型,创建目标元素包括:
若所述待执行指令元素的类型为样式资源(link)元素类型,则创建目标样式资源元素;
相应的,所述将所述待执行指令元素的预设属性赋值给所述目标元素,包括:
将所述目标样式资源元素的超文本引用(href)属性赋值为所述待执行指令元素的超文本引用属性的值,且,确定当前页面与所述超文本引用(href)属性指定的文档的关系为预设样式表。
本文中的设备可以是服务器、PC、PAD、手机等。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
一种数据嵌入方法,包括:
获取待执行指令元素,所述待执行指令元素表征对应资源的载入和执行动作;
根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源;
将所述待执行指令元素的预设属性赋值给所述目标元素;
将所述赋值后的目标元素插入到预设页面的头部元素中。
优选的,所述根据所述待执行指令元素的类型,创建目标元素包括:获取所述待执行指令元素的类型、属性信息和数量;
基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素。
优选的,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素包括:
若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为多个时,则创建全局对象队列,所述全局对象队列中的每个对象对应一个所述待执行指令元素,并按照所述待执行指令元素间的顺序依赖关系进行排序;
基于每个所述待执行指令元素对应的对象的排序,依次根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素还包括:
若所述待执行指令元素的类型为可执行脚本(script)元素类型且数量为一个时,根据所述待执行指令元素包括的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素。
优选的,所述属性信息包括源属性和jsonp属性,相应的,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素,包括:
判断所述待执行指令元素是否包括所述源属性;
若包括,确定具有所述源属性链接的预设可执行javascript文件的可执行脚本(script)元素为所述目标元素,或,确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素。
优选的,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本(script)元素作为目标元素,还包括:
若所述待执行指令元素不包括所述源属性,进一步判断所述待执行指令元素是否包含所述jsonp属性;
若不包含所述jsonp属性,判断所述待执行脚本元素的源属性中的地址信息是否包括回调函数,若包括,确定具有基于所述回调函数的方法定义的预设jsonp页面信息的可执行脚本(script)元素为所述目标元素,若不包括,将预设回调函数的方法定义写入所述待执行脚本元素的源属性,并确定写入所述预设回调函数的方法定义的可执行脚本元素为所述目标元素;
若包含所述jsonp属性,确定具有所述源属性和所述jsonp属性的可执行脚本元素为所述目标元素。
优选的,所述确定嵌入预设可执行代码的可执行脚本(script)元素为所述目标元素,包括:
判断所述预设可执行代码是否包括预设语句;
如果是,获取所述可执行脚本元素的前一兄弟节点,并为所述前一兄弟节点定义随机地址,将所述预设语句中的地址替换成所述随机地址。
优选的,还包括:
判断所述待执行指令元素是否包括async属性;
若包括,同时执行具有所述async属性的待执行指令元素对应的所述对象;
若不包括,按照预设执行顺序依次执行所述全局对象队列中每个所述对象。
优选的,所述根据所述待执行指令元素的类型,创建目标元素包括:
若所述待执行指令元素的类型为样式资源(link)元素类型,则创建目标样式资源元素;
相应的,所述将所述待执行指令元素的预设属性赋值给所述目标元素,包括:
将所述目标样式资源元素的超文本引用(href)属性赋值为所述待执行指令元素的超文本引用属性的值,且,确定当前页面与所述超文本引用(href)属性指定的文档的关系为预设样式表。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (9)

1.一种数据嵌入方法,其特征在于,包括:
获取待执行指令元素,所述待执行指令元素表征对应资源的载入和执行动作;
根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源;所述根据所述待执行指令元素的类型,创建目标元素包括:
获取所述待执行指令元素的类型、属性信息和数量;
基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素;
将所述待执行指令元素的预设属性赋值给所述目标元素;
将所述赋值后的目标元素插入到预设页面的头部元素中;
其中,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素包括:
若所述待执行指令元素的类型为可执行脚本元素类型且数量为多个时,则创建全局对象队列,所述全局对象队列中的每个对象对应一个所述待执行指令元素,并按照所述待执行指令元素间的顺序依赖关系进行排序;基于每个所述待执行指令元素对应的对象的排序,依次根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本元素作为目标元素;
若所述待执行指令元素的类型为可执行脚本元素类型且数量为一个时,根据所述待执行指令元素包括的属性信息创建与所述待执行指令元素对应的可执行脚本元素作为目标元素。
2.根据权利要求1所述的方法,其特征在于,所述属性信息包括源属性和jsonp属性,相应的,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本元素作为目标元素,包括:
判断所述待执行指令元素是否包括所述源属性;
若包括,确定具有所述源属性链接的预设可执行javascript文件的可执行脚本元素为所述目标元素,或,确定嵌入预设可执行代码的可执行脚本元素为所述目标元素。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本元素作为目标元素,还包括:
若所述待执行指令元素不包括所述源属性,进一步判断所述待执行指令元素是否包含所述jsonp属性;
若不包含所述jsonp属性,判断所述待执行脚本元素的源属性中的地址信息是否包括回调函数,若包括,确定具有基于所述回调函数的方法定义的预设jsonp页面信息的可执行脚本元素为所述目标元素,若不包括,将预设回调函数的方法定义写入所述待执行脚本元素的源属性,并确定写入所述预设回调函数的方法定义的可执行脚本元素为所述目标元素;
若包含所述jsonp属性,确定具有所述源属性和所述jsonp属性的可执行脚本元素为所述目标元素。
4.根据权利要求2或3所述的方法,其特征在于,所述确定嵌入预设可执行代码的可执行脚本元素为所述目标元素,包括:
判断所述预设可执行代码是否包括预设语句;
如果是,获取所述可执行脚本元素的前一兄弟节点,并为所述前一兄弟节点定义随机地址,将所述预设语句中的地址替换成所述随机地址。
5.根据权利要求1所述的方法,其特征在于,还包括:
判断所述待执行指令元素是否包括async属性;
若包括,同时执行具有所述async属性的待执行指令元素对应的所述对象;
若不包括,按照预设执行顺序依次执行所述全局对象队列中每个所述对象。
6.根据权利要求1所述的方法,其特征在于,所述根据所述待执行指令元素的类型,创建目标元素包括:
若所述待执行指令元素的类型为样式资源元素类型,则创建目标样式资源元素;
相应的,所述将所述待执行指令元素的预设属性赋值给所述目标元素,包括:
将所述目标样式资源元素的超文本引用属性赋值为所述待执行指令元素的超文本引用属性的值,且,确定当前页面与所述超文本引用属性指定的文档的关系为预设样式表。
7.一种数据嵌入装置,其特征在于,包括:
获取模块,用于获取待执行指令元素,所述待执行指令元素表征对应资源的载入和执行动作;
创建模块,用于根据所述待执行指令元素的类型,创建目标元素,所述目标元素用于链接预设外部资源;所述根据所述待执行指令元素的类型,创建目标元素包括:
获取所述待执行指令元素的类型、属性信息和数量;
基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素;
赋值模块,用于将所述待执行指令元素的预设属性赋值给所述目标元素;
插入模块,用于将所述赋值后的目标元素插入到预设页面的头部元素中;
其中,所述基于所述待执行指令元素的类型、属性信息和数量创建与所述待执行指令元素的类型相匹配的元素作为目标元素包括:
若所述待执行指令元素的类型为可执行脚本元素类型且数量为多个时,则创建全局对象队列,所述全局对象队列中的每个对象对应一个所述待执行指令元素,并按照所述待执行指令元素间的顺序依赖关系进行排序;基于每个所述待执行指令元素对应的对象的排序,依次根据所述待执行指令元素的属性信息创建与所述待执行指令元素对应的可执行脚本元素作为目标元素;
若所述待执行指令元素的类型为可执行脚本元素类型且数量为一个时,根据所述待执行指令元素包括的属性信息创建与所述待执行指令元素对应的可执行脚本元素作为目标元素。
8.一种数据嵌入系统,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述程序,所述程序运行时执行权利要求1至6中任意一项所述的数据嵌入方法。
9.一种存储介质,其特征在于,存储有程序,所述程序被处理器执行时实现如权利要求1-6中任意一项所述的数据嵌入方法。
CN201710711651.5A 2017-08-18 2017-08-18 数据嵌入方法、装置、系统以及存储介质 Active CN109426497B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710711651.5A CN109426497B (zh) 2017-08-18 2017-08-18 数据嵌入方法、装置、系统以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710711651.5A CN109426497B (zh) 2017-08-18 2017-08-18 数据嵌入方法、装置、系统以及存储介质

Publications (2)

Publication Number Publication Date
CN109426497A CN109426497A (zh) 2019-03-05
CN109426497B true CN109426497B (zh) 2022-04-26

Family

ID=65497126

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710711651.5A Active CN109426497B (zh) 2017-08-18 2017-08-18 数据嵌入方法、装置、系统以及存储介质

Country Status (1)

Country Link
CN (1) CN109426497B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113938380B (zh) * 2021-10-09 2024-03-29 北京天地和兴科技有限公司 一种网络设备接口动态适配方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2528433A (en) * 2014-06-02 2016-01-27 Piksel Inc Changing inherited properties of an object
US9785414B2 (en) * 2015-11-25 2017-10-10 International Business Machines Corporation Dynamic developer education generating process
CN106919371A (zh) * 2015-12-25 2017-07-04 航天信息软件技术有限公司 响应式页面创建方法、系统、以及服务器
CN105574207A (zh) * 2016-01-21 2016-05-11 上海谦讯网络科技有限公司 一种wap网页开发方法
CN106776800B (zh) * 2016-11-22 2020-09-11 山东中创软件工程股份有限公司 AngularJS框架的页面生成方法、装置及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
如何在AngularJS部分模板中包含第三方JavaScript库;tpie;《cn.voidcc.com/question/p-gctduogw-bkk.html》;20150524;正文第1-4页 *

Also Published As

Publication number Publication date
CN109426497A (zh) 2019-03-05

Similar Documents

Publication Publication Date Title
CN109976761B (zh) 软件开发工具包的生成方法、装置及终端设备
US9477450B2 (en) Manual refinement of specialized classes in runtime environments
CN106933887B (zh) 一种数据可视化方法及装置
TW201732647A (zh) 一種網頁腳本載入方法和裝置
CN109739600B (zh) 数据处理方法、介质、装置和计算设备
CN110580147A (zh) 一种应用程序的开发方法和装置
CN112632437A (zh) 一种网页页面生成方法、装置及计算机可读存储介质
CN107943465B (zh) 一种生成html表单的方法及装置
CN107786630B (zh) 一种web应用包处理方法、装置及设备
CN109947643B (zh) 一种基于a/b测试的实验方案的配置方法、装置及设备
CN112765023A (zh) 测试用例生成方法、装置
CN110018984A (zh) 一种文件格式的转换方法及装置
US10387124B2 (en) System and method for creating domain specific language
CN112307509A (zh) 一种脱敏处理方法、设备、介质及电子设备
CN106874173B (zh) 页面模板的测试方法和装置
CN109426497B (zh) 数据嵌入方法、装置、系统以及存储介质
CN108874379B (zh) 页面的处理方法及装置
CN109271180B (zh) 一种数据处理方法及装置
CN111367512B (zh) 一种应用程序开发中创建Android库模块依赖关系的方法及装置
CN114254229A (zh) 网页渲染方法及装置
CN109726346B (zh) 页面组件处理方法及装置
CN112817595A (zh) 界面渲染方法、装置、存储介质及电子设备
US10725838B2 (en) Application startup control
CN111400058A (zh) 调用消息的方法、装置、计算机设备及存储介质
CN110941429A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100080 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing

Applicant after: Beijing Guoshuang Technology Co.,Ltd.

Address before: 100086 Beijing city Haidian District Shuangyushu Area No. 76 Zhichun Road cuigongfandian 8 layer A

Applicant before: Beijing Guoshuang Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant