与WebKit相关的“Chrome客户端”是什么?

时间:2013-01-04 16:35:14

标签: webkit

WebKit源代码和文档经常使用术语“Chrome客户端”来描述用于前端显示的特定类。我对“Chrome”这个术语的含义感到困惑,因为它似乎与Google Chromium端口无关。在网络上搜索有关此内容的任何信息都很困难,因为搜索字词“chrome”和“客户端”不可避免地会显示与Google Chrome浏览器相关的results,或者仅提供指向WebKit源代码的链接。

任何人都可以解释一下Chrome客户端是什么,以及“Chrome”在这种情况下的含义是什么?

3 个答案:

答案 0 :(得分:5)

ChromeClient是一个抽象接口,WebCore用它来与构建在WebCore之上的多个WebKit API层进行交互。其功能以包含特定WebCore Page的视图的用户界面(又名“chrome”)方面为中心。这种抽象很重要,因为在WebCore之上构建了许多单独的API层,并且每个API层处理用户界面的方式甚至可以在同一OS上运行的API层之间有所不同(例如,WebKit和WebKit2有不同的需求) )。

作为一个简单示例,JavaScript ChromeClient::runJavaScriptAlert函数调用alertrunJavaScriptAlert for the Cocoa WebView class的实现只是按照人们的预期调用适当的WebUIDelegate方法。其他情况,例如工具提示的显示,完全由具体的ChromeClient实现处理,而不涉及任何WebView的委托。

答案 1 :(得分:1)

ChomeClient是一个接口,它将显示GUI元素(如警报,弹出窗口,提示,窗口(window.open))委托给WebKit端口。

基本上我们可以说窗口相关的操作,比如滚动,通过窗口的无效部分请求重绘,等等。

每个WebKit端口都通过覆盖ChromeClient交互面来提供自己的实现。例如,Qt可能有ChromeClientQt.h& ChromeClientQt.cpp& GTK可能有ChromeClientGTk.h& ChromeClientGTk.cpp。

答案 2 :(得分:-1)

Webkit是Safari和Chrome使用的Web浏览器渲染渲染引擎(其中包括,但这些是流行的)。

CSS选择器上的-webkit前缀是只有这个引擎要处理的属性,与-moz属性非常相似。我们中的许多人都希望这一点消失,例如-webkit-border-radius将被标准border-radius取代,对于多个浏览器,您不需要多个规则。这实际上是“预先指定”功能的结果,这些功能旨在不会干扰标准版本。

对于你的更新:...不,它与IE无关,IE至少在9之前使用了一个名为Trident的不同渲染引擎。