支持异步调用的JavaScript事件扩展方法技术

技术编号:14853138 阅读:31 留言:0更新日期:2017-03-18 20:13
本发明专利技术涉及一种支持异步调用的JavaScript事件扩展方法,该方法基于WebKit实现,包括:在WebCore内按照DOM事件的命名方式扩展JavaScript事件的名称;按照WebCore中JavaScript对象的创建方式创建JavaScript事件对象;将所创建的JavaScript事件对象扩展为EventTarget;将WebCore中的事件封装为V8中的事件对象;编译并部署动态库。

【技术实现步骤摘要】

本专利技术涉及嵌入式领域,特别涉及一种支持异步调用的JavaScript事件扩展方法
技术介绍
在嵌入式设备上,用户不仅可以通过浏览器来获取互联网上的信息,同时还可以通过浏览器操控设备与本地功能组件交互。以浏览器为载体的Web应用正逐渐兴起,Web应用具有开发门槛低,容易移植等优点。在构建Web应用的时候,一个重要的问题是需要将本地组件的接口扩展为JavaScript接口,供Web应用调用。将本地组件接口扩展为JavaScript,具有广泛的需求。本地组件和JavaScript之间的同步调用比较容易实现,但是由于异步调用时需要跨线程之间做消息传递,以及异步处理后需要将结果以回调的方式返回等特点,本地组件与JavaScript之间做异步调用比较困难。
技术实现思路
本专利技术的目的在于克服现有技术中本地组件与JavaScript之间的异步调用较为困难的缺陷,从而提供一种能够较好地实现本地组件和JavaScript异步调用的方法。为了实现上述目的,本专利技术提供了一种支持异步调用的JavaScript事件扩展方法,该方法基于WebKit实现,包括:步骤1)、在WebCore内按照DOM事件的命名方式扩展JavaScript事件的名称;步骤2)、按照WebCore中JavaScript对象的创建方式创建JavaScript事件对象;步骤3)、将步骤2)中所创建的JavaScript事件对象扩展为EventTarget;步骤4)、将WebCore中的事件封装为V8中的事件对象;步骤5)、编译并部署动态库。上述技术方案中,所述步骤2)包括:扩展WebCore中JavaScript对象的事件,得到JavaScript事件对象;声明所述JavaScript事件对象继承Event对象,并定义所述JavaScript事件对象的属性;在WebCore中,将与所述JavaScript事件对象所对应的C++类继承WebCore中的Event类,实现属性的getter方法。上述技术方案中,所述步骤3)包括:令JavaScript对象继承EventTarget;将JavaScript事件声明为所述JavaScript对象的一个属性;在WebCore中,令与所述JavaScript对象所对应的C++类继承EventTarget,并在该类中定义JavaScript事件监听函数的setter和getter方法;在所述JavaScript对象中实现一个创建并发起JavaScript事件的函数。上述技术方案中,所述的步骤4)包括:在JavaScript对象所对应的C++类的基类EventTarget中加入getter方法,该方法为虚函数,同时在该JavaScript对象所对应的C++类中重写该方法,返回this指针;在WebCore中的Event类中加入判断事件类型的方法,该方法同样是虚函数,在Event的派生类,即JavaScript事件对象所对应的C++类中重写该方法;将WebCore中的Event类封装为V8Event,加入事件的类型判断并将WebCore中的Event类封装为V8的数据格式。本专利技术的优点在于:1、本专利技术可有效地解决本地组件和JavaScript之间的异步调用问题。所扩展的JavaScript对象和本地组件之间不仅可以同步调用,还可以异步调用,拓宽了本地组件和扩展JavaScript对象之间的调用方式。2、本专利技术提出的异步调用方法,是在浏览器内部通过native方式实现,在嵌入式设备计算资源有限的环境下,能够节省计算资源,特别适合在本地组件和JavaScript对象之间有频繁异步调用的情景。附图说明图1是本专利技术的支持异步调用的JavaScript事件扩展方法的应用场景示意图;图2是本专利技术的支持异步调用的JavaScript事件扩展方法的流程图;图3是本专利技术的支持异步调用的JavaScript事件扩展方法中WebCore的DOM事件模型静态结构图;图4是本专利技术的支持异步调用的JavaScript事件扩展方法中OTTVideo事件的函数调用序列图。具体实施方式现结合附图对本专利技术作进一步的描述。本专利技术的方法是基于WebKit实现的,为了便于理解,在对本专利技术的方法做详细说明之前,首先对WebKit做简要的描述。WebKit是一个开源网页排版引擎,WebKit内核中主要包含两大部分:WebCore和JavaScript引擎。WebCore是HTML文档排版引擎,负责解析、布局、渲染HTML文档。其中包含DOM(DocumentObjectModule,文档对象模型)的实现,同时WebCore也有绑定(binding)模块,它可以和JavaScript引擎绑定。这样JavaScript引擎可以操控DOM模块,控制网页的行为。JavaScript引擎是JavaScript语言的一个解释器,提供了JavaScript的运行环境,可以解析并执行JavaScript脚本。同时,JavaScript引擎与WebCore中的bindings模块相联系,使得JavaScript脚本可以操作DOM元素。下面结合实例对本专利技术的方法做进一步说明。图1为本专利技术方法的应用场景的示意图,如图所示,一浏览器中包含有本地组件,而在Web页面中运行JavaScript脚本。为了实现本地组件与JavaScript脚本间的同步调用与异步调用(特别是异步调用),将本地组件的接口扩展为JavaScript接口。所述的JavaScript接口基于WebKit实现,即在该接口中至少包括有WebCore和JavaScript引擎。在下面的实例中将以流媒体视频的播放为例,对本专利技术的方法如何将本地组件的接口扩展为JavaScript接口做进一步的说明。在流媒体视频播放的过程中,用户在Web页面上点击一个流媒体视频,由Web页面中的JavaScript脚本调用本地组件,本地组件则通过异步方式获取视频的URL地址,当本地组件准备好URL地址后,以DOM事件的方式通知Web页面。具体的说,在本实施例中,将本地组件的JavaScript接口的WebCore中与流媒体视频播放有关的对象记为OTTVideo对象;将Web页面的JavaScript脚本中与流媒体视频播放有关的对象记为ottvideo对象;将OTTVideo对象向ottvideo对象所发送的DOM事件记为onPlay。则前述的流媒体视频播放过程即为:OTTVideo对象通过本文档来自技高网...

【技术保护点】
一种支持异步调用的JavaScript事件扩展方法,该方法基于WebKit实现,包括:步骤1)、在WebCore内按照DOM事件的命名方式扩展JavaScript事件的名称;步骤2)、按照WebCore中JavaScript对象的创建方式创建JavaScript事件对象;步骤3)、将步骤2)中所创建的JavaScript事件对象扩展为EventTarget;步骤4)、将WebCore中的事件封装为V8中的事件对象;步骤5)、编译并部署动态库。

【技术特征摘要】
1.一种支持异步调用的JavaScript事件扩展方法,该方法基于WebKit实现,包
括:
步骤1)、在WebCore内按照DOM事件的命名方式扩展JavaScript事件的名称;
步骤2)、按照WebCore中JavaScript对象的创建方式创建JavaScript事件对象;
步骤3)、将步骤2)中所创建的JavaScript事件对象扩展为EventTarget;
步骤4)、将WebCore中的事件封装为V8中的事件对象;
步骤5)、编译并部署动态库。
2.根据权利要求1所述的支持异步调用的JavaScript事件扩展方法,其特征在
于,所述步骤2)包括:
扩展WebCore中JavaScript对象的事件,得到JavaScript事件对象;
声明所述JavaScript事件对象继承Event对象,并定义所述JavaScript事件对象
的属性;
在WebCore中,将与所述JavaScript事件对象所对应的C++类继承WebCore中
的Event类,实现属性的getter方法。
3.根据权利要求2所述的支持异步调用的JavaScript事件扩展方法,其特征在
于,所述步骤...

【专利技术属性】
技术研发人员:胡琳琳王硕郭志川
申请(专利权)人:中国科学院声学研究所
类型:发明
国别省市:北京;11

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

1