摘要:对浏览器进行本地扩展,对JavaScript的功能进行扩充,能强化浏览器在嵌入式平台的应用。该文将主要介绍基于WebKit内核浏览器的本地JS扩展方法,以实现浏览器对本地JavaScript对象的调用,拓宽浏览器的功能领域。
论文网 -关键词:WebKit;JavaScript;本地扩展;嵌入式;播放器
论文发表:www.qikan110.com 1009-3044(2011)30-7528-02
Browser Based on WebKit Native Extension Methods
WU Guang-xu, WU Xiao-xi
(University of Electronic Science and Technology, Chengdu 611731, China)
Abstract: To strengthen the support of browser for multi-platform business and multi-service business, for the browser, local extension has become an effective solution, which expands the functionality of JavaScript. This article will focus on explaining local JS extension methods of core browser based on WebKit. In order to achieve the situation that browser can select JavaScript objects on the local level which broadens the function of itself.
Key words: webkit; javascript; native extension; embedded; player
目前极大多数的嵌入式设备上都配有上网功能,且对上网的要求极高,用户有9 成以上的上网行为靠浏览器来完成的。浏览器逐渐成为嵌入式设备不可或缺的组成部分,是用户查看网络信息、获取网络资源的一个极为重要的工具。选取WebKit浏览器引擎在浏览器开发中带来很多便利。Apple公司基于WebKit引擎的Safari for Win的推出给用户带来了超乎寻常的用户体验。随着Google公司基于WebKit引擎的Chrome浏览器的成功开发及推出,WebKit引擎的关注度空前高涨,尤其是WebKit方便快捷的优点更让用户极为青睐。目前国内外已经推出了几款基于WebKit引擎的嵌入式浏览器,如iPhone和Android的内置浏览器。
1 Webkit本地扩展技术
在嵌入式设备中,浏览器作用广泛。通过浏览器来完成用户与应用程序之间的交互,可以很大程度上降低应用程序的开发和移植难度。为强化对基于浏览器的应用程序的支持,现代的浏览器提供了扩展机制来加载本地代码以实现相应的功能和操作,比如ActiveX和NPAPI插件的方式,Google提出了Native Client技术。对浏览器进行本地扩展成为一种有效的解决方案,对JavaScript的功能进行扩充,同时这样还很好的保证了安全性。这就是本文将主要介绍基于WebKit内核浏览器的本地JS扩展方法,即改造WebKit,将JavaScript对象与本地对象映射,使JS对象本地化,实现浏览器对本地JavaScript对象的调用,以拓宽JavaScript的功能领域。
2 WebKit本地js扩展方法及调用流程
2.1 WebKit本地js扩展方法
2.1.1 标题
1) 在WebKit源码路径下的WebCore/page/ 下DOMWindow.cpp、DOMWindow.h、DOMWindow.idl添加PlayTool类: DOMWindow.h中添加PlayTools类,以及类的函数指针 playtools(),以及类的对象m_PlayTools; DOMWindow.cpp中添加PlayTools类的函数指针playtools()的实现:在DOMWindow::clear()中添加PlayTools对象的disconnectFrame()函数; DOMWindow.idl中添加PlayTool,格式如readonly attribute PlayTools PlayTools。
2) 在WebCore/page/ 下创建PlayTools.cpp、PlayTools.h、PlayTools.idl: PlayTools.idl中添加PlayTools接口interface PlayTools {},在接口中定义要使用的接口函数,如测试函数 [DoNotCheckDomainSecurity] int debug(in DOMString infor)、本地读取函数等。PlayTools.h中,定义新添加的接口函数; PlayTools.cpp中,实现新添加的接口函数。
3) 实现PlayTools类中成员函数,成员函数 的实现可以直接在PlayTools.cpp中实现,但为了修改实现函数时不重新编译浏览器,所以现在实现函数与浏览器分离,采取第三方库的形式,在PlayTools.cpp用dlopen导入第三方库,在WebCore/page/添加 WebKit_PlayTools.h,在WebKit_PlayTools.h 中PlayTools接口函数指针定义。
4) 在第三方库中实现类中成员函数。需要WebCore/page/ 中的WebKit_PlayTools.h文件,新建WebKit_PlayTools.c、PlaylFile.h、PlayFile.c。在WebKit_PlayTools.c初始化接口函数指针,使其指向对应的实现函数。在PlaylFile.h中定义本地操作的实现函数,如:int createPlaylHtmlFile(char* dpath)、 int getPlayPath(char* path)。在PlayFile.c中实现所有本地操作的实现函数,如:调用播放器,播控等。将WebKit_PlayTools.h、 WebKit_PlayTools.c、PlayFile.h、PlayFile.c编成动态库,动态库名称为PlayTools.cpp中的dlopen导入的库名。
5)修改编译文件,将PlayTools.cpp和 PlayTools.h添加到CmakeList.txt,编译浏览器(即调试方便,可先编译PC版本的浏览器)。
6) 测试本地JavaScript扩展接口:编写简单的测试网页,JS中直接调用接口函数:PlayTools.debug("test")来确认本地JavaScript扩展正确与否。
7) 编写本地Html网页,进行相应的操作。
2.2 Webkit本地扩展及实施例
2.2.1 本地扩展流程
如图1。
2.2.2 实例
以调用播放器并播控为例:
首先对基于Webkit内核的浏览器,进行JavaScript本地扩展,添加播放器操作接口,如调用播放器、暂停、播放、恢复、快进、快退、下一个、调节音量、静音、退出等,添加完接口后正确编译浏览器。然后编写用于调用播放器以及进行播控的Html页面,相关操作上使用本地扩展的JS的API。
确保设备上已经有播放器应用程序之后,通过浏览器,打开本地播放显示页面,传递本地视频文件或者网络视频文件路径,调用播放器的open接口,播放器启动,播放显示页面跳转到透明页,该透明页是上一步所写的播控页。在JS中通过键值映射来调用播控函数,如暂停、播放、恢复、快进、快退、下一个、调节音量、静音、退出等。这样可以通过浏览器对播放器进行操控。如此便可以简易、快速、有效的对播放器操作管理。
图2为实施例的流程图。
3 应用
本文应用于浏览器领域,主要应用在嵌入式设备上。利用浏览器技术在嵌入式设备上的使用,对浏览器进行JavaScript扩展,通过JavaScript类和本地类之间的映射,在网页上通过调用本地的JavaScript接口,扩展Javascript的API,以达到扩大操作范围。基于WebKit浏览器的本地扩展用途很广,比如:浏览器调用播放器。可以添加本地接口,然后只需要在浏览器中调用本地播放器的功能接口(如播放、暂停、恢复、快进、快退、音量等),然后网页跳转透明页,使下层的播放器实现出来,通过透明页进行播控;显示本地文件;通过浏览器进行本地下载、本地IP设置(DHCP、static IP、PPPOE)、恢复出厂设置、用户认证、业务设置、密码修改等。
4 结论
本文提出的基于WebKit的嵌入式浏览器的本地扩展方法,实现了浏览器以本地代码的调用。充分利用浏览器技术在嵌入式设备上的使用,对浏览器进行JavaScript扩展,使JavaScript类与本地扩展类实现映射,通过浏览器,完成浏览器本不具备的许多功能,拓展了浏览器在嵌入式领域的用途。通过引入了浏览器的本地扩展技术,用户能直接在浏览器上完成大部分操作,浏览器成了用户使用最多的UI界面,减少了用户操作上的不便。同时也利用WebKit浏览器的排版能力加快UI的设计和开发,减少了开发难度和成本,降低了硬件上的额为开销;使用户对终端设备的管理更加智能,操作效率更高,体验更加流畅。
参考文献: 发表论文 :
[1] The WebKet open source project[EB/OL].[2011-08-10].http://webkit.org.
[2] JavaScript 1.5 Reference[EB/OL].http://devedge.netscape.com/library/manuals/2000/javascript/1.5/refercence/.
[3] 贺理,吴健,贾彦民.基于JavaScript的浏览器端调用web服务研究与实现[J].中国科学院研究生院学报,2007,24(6).
[4] 蒋章概,陈榕.基于CAR构件的WebKit本地扩展策略[J].计算机应用,2009,29.
[5] 赵经纬,周余.基于WebKit的嵌入式浏览器的研究与实现[J].电子测量技术,2009,34(3).
论文网 -关键词:WebKit;JavaScript;本地扩展;嵌入式;播放器
论文发表:www.qikan110.com 1009-3044(2011)30-7528-02
Browser Based on WebKit Native Extension Methods
WU Guang-xu, WU Xiao-xi
(University of Electronic Science and Technology, Chengdu 611731, China)
Abstract: To strengthen the support of browser for multi-platform business and multi-service business, for the browser, local extension has become an effective solution, which expands the functionality of JavaScript. This article will focus on explaining local JS extension methods of core browser based on WebKit. In order to achieve the situation that browser can select JavaScript objects on the local level which broadens the function of itself.
Key words: webkit; javascript; native extension; embedded; player
目前极大多数的嵌入式设备上都配有上网功能,且对上网的要求极高,用户有9 成以上的上网行为靠浏览器来完成的。浏览器逐渐成为嵌入式设备不可或缺的组成部分,是用户查看网络信息、获取网络资源的一个极为重要的工具。选取WebKit浏览器引擎在浏览器开发中带来很多便利。Apple公司基于WebKit引擎的Safari for Win的推出给用户带来了超乎寻常的用户体验。随着Google公司基于WebKit引擎的Chrome浏览器的成功开发及推出,WebKit引擎的关注度空前高涨,尤其是WebKit方便快捷的优点更让用户极为青睐。目前国内外已经推出了几款基于WebKit引擎的嵌入式浏览器,如iPhone和Android的内置浏览器。
1 Webkit本地扩展技术
在嵌入式设备中,浏览器作用广泛。通过浏览器来完成用户与应用程序之间的交互,可以很大程度上降低应用程序的开发和移植难度。为强化对基于浏览器的应用程序的支持,现代的浏览器提供了扩展机制来加载本地代码以实现相应的功能和操作,比如ActiveX和NPAPI插件的方式,Google提出了Native Client技术。对浏览器进行本地扩展成为一种有效的解决方案,对JavaScript的功能进行扩充,同时这样还很好的保证了安全性。这就是本文将主要介绍基于WebKit内核浏览器的本地JS扩展方法,即改造WebKit,将JavaScript对象与本地对象映射,使JS对象本地化,实现浏览器对本地JavaScript对象的调用,以拓宽JavaScript的功能领域。
2 WebKit本地js扩展方法及调用流程
2.1 WebKit本地js扩展方法
2.1.1 标题
1) 在WebKit源码路径下的WebCore/page/ 下DOMWindow.cpp、DOMWindow.h、DOMWindow.idl添加PlayTool类: DOMWindow.h中添加PlayTools类,以及类的函数指针 playtools(),以及类的对象m_PlayTools; DOMWindow.cpp中添加PlayTools类的函数指针playtools()的实现:在DOMWindow::clear()中添加PlayTools对象的disconnectFrame()函数; DOMWindow.idl中添加PlayTool,格式如readonly attribute PlayTools PlayTools。
2) 在WebCore/page/ 下创建PlayTools.cpp、PlayTools.h、PlayTools.idl: PlayTools.idl中添加PlayTools接口interface PlayTools {},在接口中定义要使用的接口函数,如测试函数 [DoNotCheckDomainSecurity] int debug(in DOMString infor)、本地读取函数等。PlayTools.h中,定义新添加的接口函数; PlayTools.cpp中,实现新添加的接口函数。
3) 实现PlayTools类中成员函数,成员函数 的实现可以直接在PlayTools.cpp中实现,但为了修改实现函数时不重新编译浏览器,所以现在实现函数与浏览器分离,采取第三方库的形式,在PlayTools.cpp用dlopen导入第三方库,在WebCore/page/添加 WebKit_PlayTools.h,在WebKit_PlayTools.h 中PlayTools接口函数指针定义。
4) 在第三方库中实现类中成员函数。需要WebCore/page/ 中的WebKit_PlayTools.h文件,新建WebKit_PlayTools.c、PlaylFile.h、PlayFile.c。在WebKit_PlayTools.c初始化接口函数指针,使其指向对应的实现函数。在PlaylFile.h中定义本地操作的实现函数,如:int createPlaylHtmlFile(char* dpath)、 int getPlayPath(char* path)。在PlayFile.c中实现所有本地操作的实现函数,如:调用播放器,播控等。将WebKit_PlayTools.h、 WebKit_PlayTools.c、PlayFile.h、PlayFile.c编成动态库,动态库名称为PlayTools.cpp中的dlopen导入的库名。
5)修改编译文件,将PlayTools.cpp和 PlayTools.h添加到CmakeList.txt,编译浏览器(即调试方便,可先编译PC版本的浏览器)。
6) 测试本地JavaScript扩展接口:编写简单的测试网页,JS中直接调用接口函数:PlayTools.debug("test")来确认本地JavaScript扩展正确与否。
7) 编写本地Html网页,进行相应的操作。
2.2 Webkit本地扩展及实施例
2.2.1 本地扩展流程
如图1。
2.2.2 实例
以调用播放器并播控为例:
首先对基于Webkit内核的浏览器,进行JavaScript本地扩展,添加播放器操作接口,如调用播放器、暂停、播放、恢复、快进、快退、下一个、调节音量、静音、退出等,添加完接口后正确编译浏览器。然后编写用于调用播放器以及进行播控的Html页面,相关操作上使用本地扩展的JS的API。
确保设备上已经有播放器应用程序之后,通过浏览器,打开本地播放显示页面,传递本地视频文件或者网络视频文件路径,调用播放器的open接口,播放器启动,播放显示页面跳转到透明页,该透明页是上一步所写的播控页。在JS中通过键值映射来调用播控函数,如暂停、播放、恢复、快进、快退、下一个、调节音量、静音、退出等。这样可以通过浏览器对播放器进行操控。如此便可以简易、快速、有效的对播放器操作管理。
图2为实施例的流程图。
3 应用
本文应用于浏览器领域,主要应用在嵌入式设备上。利用浏览器技术在嵌入式设备上的使用,对浏览器进行JavaScript扩展,通过JavaScript类和本地类之间的映射,在网页上通过调用本地的JavaScript接口,扩展Javascript的API,以达到扩大操作范围。基于WebKit浏览器的本地扩展用途很广,比如:浏览器调用播放器。可以添加本地接口,然后只需要在浏览器中调用本地播放器的功能接口(如播放、暂停、恢复、快进、快退、音量等),然后网页跳转透明页,使下层的播放器实现出来,通过透明页进行播控;显示本地文件;通过浏览器进行本地下载、本地IP设置(DHCP、static IP、PPPOE)、恢复出厂设置、用户认证、业务设置、密码修改等。
4 结论
本文提出的基于WebKit的嵌入式浏览器的本地扩展方法,实现了浏览器以本地代码的调用。充分利用浏览器技术在嵌入式设备上的使用,对浏览器进行JavaScript扩展,使JavaScript类与本地扩展类实现映射,通过浏览器,完成浏览器本不具备的许多功能,拓展了浏览器在嵌入式领域的用途。通过引入了浏览器的本地扩展技术,用户能直接在浏览器上完成大部分操作,浏览器成了用户使用最多的UI界面,减少了用户操作上的不便。同时也利用WebKit浏览器的排版能力加快UI的设计和开发,减少了开发难度和成本,降低了硬件上的额为开销;使用户对终端设备的管理更加智能,操作效率更高,体验更加流畅。
参考文献: 发表论文 :
[1] The WebKet open source project[EB/OL].[2011-08-10].http://webkit.org.
[2] JavaScript 1.5 Reference[EB/OL].http://devedge.netscape.com/library/manuals/2000/javascript/1.5/refercence/.
[3] 贺理,吴健,贾彦民.基于JavaScript的浏览器端调用web服务研究与实现[J].中国科学院研究生院学报,2007,24(6).
[4] 蒋章概,陈榕.基于CAR构件的WebKit本地扩展策略[J].计算机应用,2009,29.
[5] 赵经纬,周余.基于WebKit的嵌入式浏览器的研究与实现[J].电子测量技术,2009,34(3).
来源:oschina
链接:https://my.oschina.net/u/592610/blog/69218