android 上 webkit js 本地扩展之全局本地对象实现步骤
2012-06-03 18:46
465 查看
android 上编写 浏览器插件有三种方式,
1. app 层,通过android framwork 层提供的 封装扩展,优劣:简单,有局限性
2. 通过 NPAPI 方式, 在 webkit上 通过 NPAPI方式扩展,优劣:相对复杂,接口统一,方便移植到其他平台
3. 通过本地扩展方式,类似于js中对象的实现,在webcore 上实现,优劣:复杂,功能强大,移植性不好。
下面为android 上 webkit js 本地扩展方案中实现全局本地对象步骤 :
android上js引擎默认使用的是V8 ,比用 wekit本身提供的引擎麻烦一些。
1. 在 WebCore/page/ 目录下创建 helloObj.h helloObj.cpp helloObj.idl
2. webcore 目录下 android.mk ,添加 page/helloObj.cpp
3. DOMWindow.cpp include "helloObj"
4. DOMWindow.cpp public 中添加
HelloObj* optionalHelloObj() const {return m_helloobj.get();}
PassRefPtr<HelloObj> helloObj() const;
实现:
PassRefPtr<HelloObj> DOMWindow::helloObj() const
{
if(!m_helloobj)
m_helloobj = HelloObj::create(m_frame);
return m_helloobj.get();
}
5.DOMWindow.h 中添加 class HelloObj;,private 部分添加 mutable RefPtr<HelloObj> m_helloobj;
6. DOMWindow.idl 中添加 readonly attribute HelloObj helloObj;
7. V8Index.h 中 添加 V(HELLOOBJ, HelloObj)
8. V8Index.cpp 中添加 #include "V8HelloObj.h"
9. Android.derived.v8bindings.mk中添加 $(intermediates)/bindings/V8HelloObj.h \
10. DOMWindow.cpp 中的clear函数添加
if(m_helloobj)
m_helloobj->disconnectFrame();
m_helloobj = 0;
11. DerivedSourcesAllInOne.cpp 中添加 #include "bindings/V8HelloObj.cpp"
1. app 层,通过android framwork 层提供的 封装扩展,优劣:简单,有局限性
2. 通过 NPAPI 方式, 在 webkit上 通过 NPAPI方式扩展,优劣:相对复杂,接口统一,方便移植到其他平台
3. 通过本地扩展方式,类似于js中对象的实现,在webcore 上实现,优劣:复杂,功能强大,移植性不好。
下面为android 上 webkit js 本地扩展方案中实现全局本地对象步骤 :
android上js引擎默认使用的是V8 ,比用 wekit本身提供的引擎麻烦一些。
1. 在 WebCore/page/ 目录下创建 helloObj.h helloObj.cpp helloObj.idl
2. webcore 目录下 android.mk ,添加 page/helloObj.cpp
3. DOMWindow.cpp include "helloObj"
4. DOMWindow.cpp public 中添加
HelloObj* optionalHelloObj() const {return m_helloobj.get();}
PassRefPtr<HelloObj> helloObj() const;
实现:
PassRefPtr<HelloObj> DOMWindow::helloObj() const
{
if(!m_helloobj)
m_helloobj = HelloObj::create(m_frame);
return m_helloobj.get();
}
5.DOMWindow.h 中添加 class HelloObj;,private 部分添加 mutable RefPtr<HelloObj> m_helloobj;
6. DOMWindow.idl 中添加 readonly attribute HelloObj helloObj;
7. V8Index.h 中 添加 V(HELLOOBJ, HelloObj)
8. V8Index.cpp 中添加 #include "V8HelloObj.h"
9. Android.derived.v8bindings.mk中添加 $(intermediates)/bindings/V8HelloObj.h \
10. DOMWindow.cpp 中的clear函数添加
if(m_helloobj)
m_helloobj->disconnectFrame();
m_helloobj = 0;
11. DerivedSourcesAllInOne.cpp 中添加 #include "bindings/V8HelloObj.cpp"
相关文章推荐
- android 上 webkit js 扩展之全局本地对象实现步骤
- c#winform中使用WebKit传递js对象实现与网页交互
- Android WebView加载本地html并实现Java与JS交互
- c#winform中使用WebKit传递js对象实现与网页交互
- iOS 混合应用的关键点分析 - 仿 Android 平台 WebView 可注入本地对象方法的功能实现要点
- android 4.0.1 webkit 基于JSC的JS 扩展
- android全局获取Context对象(在静态函数中实现toast)
- webkit的js对象扩展(二)——binding方式创建自定义对象(多实例)
- MFC使用CEF并实现js与C++交互功能,解决Render进程中OnContextCreated绑定与OnWebKitInitialized的js扩展无法回调问题
- Android基于WebView的Java和JS相互调用实现步骤,附带精简可行的DEMO
- [知了堂学习笔记]_纯JS制作《飞机大战》游戏_第2讲(对象的实现及全局变量的定义)
- JS:收集的一些Array及String原型对象的扩展实现代码
- C#在WinForm中使用WebKit传递js对象实现与网页交互的方法
- Android编程实现全局获取Context及使用Intent传递对象的方法详解
- webkit的js对象扩展(二)——binding方式创建自定义对象(多实例)
- 原生js FileReader对象实现图片上传本地预览效果
- Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
- Arcgis for JS扩展GraphicLayer实现区域对象的聚类统计与展示
- 原生js实现复制对象、扩展对象 类似jquery中的extend()方法