webkit问题汇总

本文汇总了WebKit相关的问题,包括如何使用tcpdump抓包,idl文件在Web平台的作用,JS调用属性和方法的流程,以及WebKit内部的JavaScriptCore与V8的区别。同时,提到了Android WebKit中使用V8替代原生JavaScriptCore的情况,并简单比较了JavaScriptCore、V8和SpiderMonkey等JavaScript引擎的特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.如何抓包:

tcpdump  -s 0 -w test.pcp 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

-s 0 :抓完整的包

-w:名字

 

2. idl文件是什么?

是需要暴露给JS解析引擎的接口。

W3C—WEB IDL
由该工作草案定义的接口定义语言(interface definition language)叫作Web IDL,它可被用来描述要在Web浏览器里实现的接口。Web IDL是一种IDL的变体,它所具有的很多特性使之能够更容易地对Web平台里的常用脚本对象的行为进行规定。为了支持过去只能以文字描述的常用功能,该 IDL在很多方面得到了扩展。另外,它还为ECMAScript第3版和Java给出了精确的语言绑定。

 

3. BatchedAttribute和BatchedCallback分别是JS所能调用的属性和所使用的方法

 

4.JS的属性和方法注册到Context流程

ScriptController::executeScript
ScriptController::evaluate
v8::Handle v8Context = V8Proxy::mainWorldContext(m_proxy->frame());
proxy->mainWorldContext();
V8DOMWindowShell::initContextIfNeeded
V8DOMWindowShell::createNewContext
V8DOMWindow::GetShadowObjectTemplate
static v8::Persistent ConfigureShadowObjectTemplate
void batchConfigureAttributes
void configureAttribute
(attribute.onProto ? proto : instance)->SetAccessor(...)

 

5. webkit分为webcore和javascriptcore,v8属于其中的javascriptcore,google是没有用webkit的javascriptcore的,但是用了webcore.

 

所以android的webkit代码里有2个javascriptcore,v8和js。android是使用了自己的v8代替原来js。

 

6. 初步对比JavaScriptCore、V8、SpiderMonkey等

具体JavaScriptCore、V8、SpiderMonkey、TracMonkey执行效率对比如何,不同的测试方法会有不同的测试结果,在这里不再阐述。
就个人了解而言,觉得JavaScriptCore关于对象的方法、属性的安全访问控制方面略有欠缺;SpiderMonkey作为最早一批实现Javascript的引擎,其代码使用C语言来实现,稍现复杂,没有象后来的实现如JavaScriptCore、V8等借鉴了最新的虚拟机技术如JVM等;V8作为新近推出的Javascript实现,正与其特点所描述,拥有很多优势,同时基于C++实现,充分利用了C++ template,代码相对简洁,便于学习使用;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值