webkit问题汇总

来源:互联网 发布:fifaonline317数据更新 编辑:程序博客网 时间:2024/06/04 18:37

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,代码相对简洁,便于学习使用;

原创粉丝点击