Web API扩展机制简单比较

在HTML5越来越普及的情况下,Web引擎通过各自的机制提供了不同的Web API(包括但不限于W3C标准API)给Web应用开发者,开发者可以充分利用这些WebAPI开发出跨平台(基于标准API)的或者功能强大(专有API)的Web应用;但是在某些情况下,开发者为了特殊需求需要开发自己的Web API,对于不同的Web引擎平台,均有各自的Web API扩展机制:

1、WebKitGtk

直截了当:通过JavaScriptCore API创建一个JS对象,并将其绑定到对应的JS Context上。

http://webkitgtk.org/reference/webkitgtk/stable/WebKitWebFrame.html#webkit-web-frame-get-global-context
http://webkitgtk.org/reference/webkitgtk/stable/webkitgtk-webkitwebview.html#WebKitWebView-window-object-cleared


2、QtWebKit

QtWebKit Bridge:通过扩展JS环境的方式来访问native对象(即QObject);这种方式实际上利用了GNOME的GObject Introspection/GI对象模型,可以很容易的与JS的动态环境集成,如直接将QObject的属性映射为JS对象的属性;这个应该和firefox的XPCOM机制差不多。

http://qt-project.org/doc/qt-4.8/qtwebkit-bridge.html


3、Android WebView

addJavaScriptInterface:通过调用Webview提供的addJavaScriptInterface函数将对象注入到页面主frame的JS Context中;并可以通过创建的JavaScriptInterface使Java与JavaScript进行交互。

http://developer.android.com/reference/android/webkit/WebView.html#addJavascriptInterface(java.lang.Object, java.lang.String)


4、CEF3

V8 API:通过对V8引擎API的C++封装实现在C++中操作JS对象。

https://code.google.com/p/chromiumembedded/wiki/JavaScriptIntegration


5、Chrome Extension API

多进程:通过将API操作委托给Browser进程来绕开Renderer进程的沙箱限制;Renderer进程的API调用通过一系列校验后经IPC通信将实际的API调用交由Browser进程实现;实现非常复杂。

https://github.com/crosswalk-project/crosswalk-website/wiki/Overview-of-Chrome-Extension-API-Infrastructure


6、Crosswalk Extension

NPRuntime:基于Chromium,将Renderer进程的API调用委托给Extension进程;类似chromium的extension机制,但是与chromium代码解耦并且添加API更简洁。

https://github.com/crosswalk-project/crosswalk-website/wiki/NPRuntime-Based-WebAPI-Extension-Framework


其他可插拔扩展机制(Plugin)实现比较复杂:

NPAPI、PPAPI、NACL


参考:https://github.com/crosswalk-project/crosswalk-website/wiki/Web-API-Extension-Comparison


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值