What is the relationship between WebIDL and WebKitIDL

2024-03-12 02:58

本文主要是介绍What is the relationship between WebIDL and WebKitIDL,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

下面的这篇文章很好的解释了这两者间的关系

WebKit的JS Binding解析

分类: WebKit   1273人阅读  评论(2)  收藏  举报
转载请注明出处:http://blog.csdn.net/horkychen
WebCore与JavaScriptCore之间使用了Proxy模式,WebCore为JSC提供了一层binding层做为封装。
Webkit参照W3C Web IDL(之前称为 Language Bindings for DOM Specifications ) 描述DOM接口,但不完全相同。其完整的名称为WebKitIDL, 详细的定义可以参考下面的链接:
     http://trac.webkit.org/wiki/WebKitIDL
每一个DOM组件除了实现文件外,都有一个IDL文件定义它的接口规格。可以在WebCore相关的目录下找到。

 

WebKit提供了一组perl脚本完成IDL转换功能。入口脚本为generate-binding.pl, 示意图如下:

 

生成的接口通过JSNode与Node关联,从而实现了与DOM各组件的关联。

 

JSDocument会在初始化时被JSGlobalObject的addStaticGlobals压入一个jsNull到JSC的Heap, 在准备解析脚本前将一个对象通过JSDomWindowBase::updateDocument更新到JSC::Heap中,供JSC在执行期使用。Frame的setDocument方法也会在读到脚本时被调用,以更新合适的document对象到JSC。

当JavaScript以document为接口,呼叫如getElementById获取组件时, 其执行序列如下:

 

下面是jsDocumentPrototypeFunctionGetElementById的实现:

EncodedJSValue JSC_HOST_CALL jsDocumentPrototypeFunctionGetElementById(ExecState* exec)

{

    JSValue thisValue = exec->hostThisValue();

……

    JSC::JSValue result = toJS(exec, castedThis->globalObject(), WTF::getPtr(impl->getElementById(elementId)));

    return JSValue::encode(result);

}

*其中的impl就是通过JSNode接口关联到的Document对象.


参考:为JavaScript Binding添加新DOM对象的三种方式及实作

这篇关于What is the relationship between WebIDL and WebKitIDL的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799930

相关文章

【UML用户指南】-06-面向对象建模-关系(relationship)

目录 1、面向对象建模常见的关系 2、关系的组成元素 3、依赖关系 4、泛化关系 5、关联关系 关联的四种修饰 1.名称 2.角色 3.多重性 4.聚合 6、常用建模技术 6.1、对简单依赖建模 6.2、对单继承建模 6.3、对结构关系建模 1、面向对象建模常见的关系 依赖 (dependency) 它表示类之间的使用关系(包括精化、跟踪和绑定关系

E-R图 实体-联系图(Entity Relationship Diagram)

E-R图 实体-联系图(Entity Relationship Diagram) 矩形:表示一个实体 一张表 一个Java类 椭圆形:表示实体拥有的属性 菱形:表示多个实体之间的关系

数仓建模—建模方法论之实体-关系(Entity-Relationship)建模

实体-关系(Entity-Relationship)模型 实体-关系(Entity-Relationship,简称ER)模型是一种用于描述现实世界中实体之间关系的数据模型。ER模型通常由实体、属性和关系三个要素组成,通过这些要素可以描述实体间的联系和属性。 E-R 模型是概念设计阶段的主要描述工具,起到『承上启下』的一种过渡作用,其重要性不言而喻,这里就不得不提到建模的流程了,大致如下 需求分

实体-联系模型(Entity-Relationship)

实体-联系模型(Entity-Relationship) 简称为ER,实体联系模型是一种概念模型,用于对显示世界建模,概念简单易于理解,且与具体的数据模型无关,但容易转换成实际数据库管理系统所支持的数据模型 第二讲 实体-联系模型 实体-联系模型(Entity-Relationship)2.1实体2.2联系2.3实体-联系图2.4弱实体集 2.1实体 实体:客观存在并且

软件测试|sqlalchemy relationship

简介 SQLAlchemy是一个流行的Python ORM(对象关系映射)库,它允许我们以面向对象的方式管理数据库。在SQLAlchemy中,relationship是一个重要的功能,用于建立表之间的关系。在本文中,我们将详细探讨relationship中的backref和back_populates参数的使用,以及如何使用它们来管理关系。 relationship的基本概念 在SQLA

Relationship Based Object铪

这虽然是用英文做的标题,但其真是意义,估计只有中国人才能懂。 首先要说明的是,Relationship Based Object(以下简称RBO),绝对是一个新的概念。因为它是我刚刚杜撰出来的。不过我想借此,表述我的一些在OO上的想法而已。有兴趣的朋友,可以共同讨论。 在说RBO之前,我想先说说中国的一个非常典型的人际处理方式:关系。有事托人找关系,没事大家拉关系。现在有人将这个说法提升了一

The BW - HANA Relationship

The BW - HANA Relationship   转自:http://weblogs.sdn.sap.com/cs/blank/view/wlg/21575 Thomas Zurek    Business CardCompany: SAP AGPosted on Oct. 15, 2010 01:11 AM in In-Memory Business Data Managem

论文阅读:Zoom-Net:Mining Deep Feature Interactions for Visual Relationship Recognition(ECCV18)

这篇论文有两个亮点,第一个是SCA-Module,第二个是损失函数的求法。整个框架还是很简洁明了的,就不多说了。 1.Spatiality-Context-Apperance Module(SCA-M) 总共计算了五种特征,主宾各一种,谓语三种。图上画得挺清楚的,就不细说了。 谓语的三种特征计算的这种结构叫做Contrasive ROI Pooling,是用来感知空间位置关系的 主语和宾语的

论文阅读:Zoom-Net:Mining Deep Feature Interactions for Visual Relationship Recognition(ECCV18)

这篇论文有两个亮点,第一个是SCA-Module,第二个是损失函数的求法。整个框架还是很简洁明了的,就不多说了。 1.Spatiality-Context-Apperance Module(SCA-M) 总共计算了五种特征,主宾各一种,谓语三种。图上画得挺清楚的,就不细说了。 谓语的三种特征计算的这种结构叫做Contrasive ROI Pooling,是用来感知空间位置关系的 主语和宾语的

SQLAlchemy的relationship

relationship函数是sqlalchemy对关系之间提供的一种便利的调用方式, backref参数则对关系提供反向引用的声明 1 背景 如没有relationship,我们只能像下面这样调用关系数据     如果在User中使用relationship定义addresses属性的话, addresses = relationship('Address')则我们可以直接在U