文档章节

基于WebKit浏览器的本地扩展方法

 吴志斌
发布于 2012/07/26 16:58
字数 2118
阅读 652
收藏 7
摘要:对浏览器进行本地扩展,对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). 

本文转载自:http://blog.csdn.net/perfectpdl/article/details/7052414

粉丝 0
博文 1
码字总数 0
作品 0
商丘
程序员
私信 提问
加载中

评论(1)

s
sxiang2007
求源码。。。sxiang2007@qq.com
webkit浏览器本地扩展(本人菜鸟求源码)

WebKit本地js扩展方法   1) 在WebKit源码路径下的WebCore/page/ 下DOMWindow.cpp、DOMWindow.h、DOMWindow.idl添加PlayTool类: DOMWindow.h中添加PlayTools类,以及类的函数指针 playtool...

sxiang2007
2012/11/15
1K
0
Mozilla 计划让 Firefox 支持 WebKit 前缀网站

Mozilla正在研究一种方法,让Firefox浏览器原生支持webkit前缀的网站。浏 览器特定的前缀长期存在,使开发人员可以编写只在某个浏览器中执行代码。这使他们能够在某些特定代码成为标准之前,...

oschina
2016/01/03
2.3K
11
Node-Webkit能够做什么呢?

我是一个新手(真的很新。。。),所以如果下面问到大神们不喜欢的千万别喷我!!! 这两天我看到了haXe这个项目,然后我就来了兴趣,我看了一些资料,接着我又了解到node-webkit和CEF这些软...

hangvo
2013/10/31
29.7K
10
WebKit 是浏览器引擎的 jQuery

最新 消息,Opera决定所有旗下浏览器(包括桌面和移动版)使用WebKit引擎(就是Chromium)。我看见许多人在Twitter上咬牙切齿。我想我可以回答这个问题,因为现在的情况和2008-2009年一样。然...

oschina
2013/02/15
3.9K
9
三大浏览器采用WebKit: 有望打造新苹果帝国

导语:美国新闻聚合网站BuzzFeed编辑约翰·赫尔曼(John Herrman)周三撰文称,Opera改用WebKit渲染引擎后,全球浏览器市场将由WebKit所主导。最终,微软也别无他选。 以下为文章主要内容: 作...

oschina
2013/02/15
5.3K
24

没有更多内容

加载失败,请刷新页面

加载更多

移动深度学习:人工智能的深水区

人工智能技术经历6年的快速发展,重新定义了很多行业的用户体验,而这仅是开始。 随着5G商用大规模落地,以及智能手机硬件性能越来越强、AIoT设备的快速普及,基于云-边缘-端算法和算力结构的...

博文视点Bv
22分钟前
2
0
vim 分屏 操作

$vim -On file file2 #大写O垂直分屏打开文件 $vim -on file file2 #小写水平打开 # n 表示分屏数,直接n等于文件个数 如果n小于文件,按顺序打开前面的n个,如果大于,打开空编辑页面 分屏快...

突突突酱
24分钟前
2
0
MySQL/Mariadb设置中文字符集(linux)

编辑/etc/my.cnf,添加以下设置 [mysql]default-character-set=utf8[mysqld]character_set_server=utf8[mysqld.safe]default-character-set=utf8[client]default-chara...

编程老陆
27分钟前
3
0
关于linux常用的挂载命令

挂载:就把一块磁盘(可以是光盘,U盘)绑定到一个空目录下面 一般情况下会挂载到mnt目录下面 挂载光盘(把光盘挂载到/mnt/cdrom这个目录中) mount -t iso9660 /dev/cdrom /mnt/cdrom 退出当前目录...

chenhongjiang
28分钟前
3
0
如何分享brain内容外部共享?几个需要知道的TheBrain问答

TheBrain(点击下载)是一款与众不同的思维导图软件,其所有信息通过一个又一个的节点进行联系,最终形成一个杂而不乱的网状结构。从头开始设计,让您捕获您的想法和信息在一个网络的联想,匹...

mnrssj
28分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部