通过binding方式
要扩展一个全局JS对象除了要为webkit添加这个对象的头文件和cpp文件外,还需要为这个对象写一个idl文件以便webkit自动生成相应的代码;另外,还需要修改DOMWindow.*以便把新对象注册上去。下面以MyObject对象为例介绍具体步骤。
WebCore/page/
1.添加MyObject.h文件
-
#ifndefMyObject_h
-
#defineMyObject_h
-
#include<wtf/PassRefPtr.h>
-
#include<wtf/RefCounted.h>
-
#include<wtf/RefPtr.h>
-
-
namespaceWebCore{
-
-
classFrame;
-
classString;
-
-
classMyObject:publicRefCounted<MyObject>{
-
-
public:
-
staticPassRefPtr<MyObject>create(Frame*frame)
-
{
-
returnadoptRef(newMyObject(frame));
-
}
-
-
~MyObject();
-
-
voiddisconnectFrame();
-
Frame*frame()const{returnm_frame;}
-
-
Stringdescription()const;
-
private:
-
MyObject(Frame*);
-
Frame*m_frame;
-
};
-
}
-
-
#endif
2.添加MyObject.cpp文件
-
#include"MyObject.h"
-
-
#include"PlatformString.h"
-
-
namespaceWebCore{
-
-
MyObject::MyObject(Frame*frame)
-
:m_frame(frame)
-
{
-
}
-
-
MyObject::~MyObject()
-
{
-
disconnectFrame();
-
}
-
-
voidMyObject::disconnectFrame()
-
{
-
m_frame=0;
-
}
-
-
StringMyObject::description()const
-
{
-
return"HelloWorld!";
-
}
-
}
3.添加MyObject.idl文件
-
modulewindow{
-
interfaceMyObject{
-
readonlyattributeDOMStringdescription;
-
};
-
}
4.修改DOMWindow.h文件
添加如下声明:
-
public:
-
MyObject*myObject()const;
-
MyObject*optionalMyObject()const{returnm_myObject.get();}
-
private:
-
mutableRefPtr<MyObject>m_myObject;
5.修改DOMWindow.cpp文件
添加接口实现
-
MyObject*DOMWindow::myObject()const
-
{
-
if(!m_myObject)
-
m_myObject=MyObject::create(m_frame);
-
returnm_myObject.get();
-
}
修改部分函数实现
void
DOMWindow::clear()函数中添加:
-
if(m_myObject)
-
m_myObject->disconnectFrame();
-
m_myObject=0;
6.修改DOMWindow.idl文件
添加:
-
attribute[Replaceable]MyObjectMyObject;
7.修改CMakeLists.txt
将MyObject.cpp、MyObject.idl加入编译。
OK。以上步骤就添加了一个自定义的全局对象。这是单实例的,有时间了再把多实例的过程写下,也就是可以new了。
小弟新手,有问题请大家多多指教。
分享到:
相关推荐
共同学习共同进步
win32-x64-67_binding.node
使用 Windows 窗体 BindingSource 自定义项添加,From MSDN
《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...
WPF的binding代码实例 总结的几个binding的基础运用
Binding.js 绑定并观看javascript对象或DOM元素的更新属性或成员更改。请参阅以获取更改特征通过脏支票和Object.observe快速Object.observe 原子更新属性过滤器支持观看DOM属性和属性允许带有访问器的属性零延迟或...
附件为个人编写的自定义android开发MVP+ViewBinding架构Demo,已经在多个项目中使用,相对比较成熟了。使用当前主流的MVP+Viewbing架构模式,喜欢的小伙伴请给个好评,谢谢!
android 自定义View — 自定义组合控件
附件为个人编写的自定义android开发MVP+ViewBinding架构Demo,已经在多个项目中使用,相对比较成熟了。使用当前主流的MVP+Viewbing架构模式,喜欢的小伙伴请给个好评,谢谢!(以此篇为准)
数据绑定流程: 1、框架把ServletRequest对象和请求参数传递给DataBinder ...BindingResult包含了已完成数据绑定的形参对象和校验错误信息对象。 最终SpringMVC框架会把BindingResult中的数据,分别赋给相应的处理方法。
c# 利用WCF实现https 安全通信
该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用...
本文以实例形式讲述了C#应用BindingSource实现数据同步的方法,对C#数据库程序开发来说具有一定的参考借鉴价值。具体实现方法如下: 下面的代码示例演示如何使用 BindingSource 组件,将三个控件(两个文本框控件和...
SessionBean: Stateless Session Bean 的生命周期是由容器决定的,当客户机发出请求要建立一个Bean的实例时,EJB容器不一定要创建一个新的Bean的实例供客户机调用,而是随便找一个现有的实例提供给客户机。...
与DotNet数据对象结合的自定义数据对象设计 (一) 数据对象与DataRow ASP.NET中大结果集的分页[翻译] .net 2.0 访问Oracle --与Sql Server的差异,注意事项,常见异常 Ado.net 与NHibernate的关系? 动态创建数据库...
本文实例讲述了Android开发之自定义View(视图)用法。分享给大家供大家参考,具体如下: ...为了实现自定义View,需要创建一个新的类,然后重写onDraw方法,在此需要注意,新创建的类MyView要继承View基类,同时还
步骤二:根据自定义类创建一个.pkg文件,我们把自定义的MySprite类定义到.pkg文件中 注意:1>,只要根据自定类.h中的内容,至于.cpp的实现,binding后lua会自动调用类的函数 2>,书写.pkg文件时要注意几条...