1

WebKit 源代码和文档经常使用术语“Chrome 客户端”来描述用于前端显示的某个类。我对“Chrome”一词的含义感到困惑,因为它似乎与 Google Chromium 端口无关。很难在网络上搜索任何关于此的信息,因为搜索词“chrome”和“client”不可避免地会带来与 Google Chrome 浏览器相关的结果,或者只是给我 WebKit 源代码的链接。

谁能解释一下 Chrome 客户端是什么,以及在这种情况下“Chrome”是什么意思?

4

3 回答 3

5

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

举个简单的例子,ChromeClient::runJavaScriptAlert由 JavaScriptalert函数调用。runJavaScriptAlertCocoaWebView的实现只是WebUIDelegate像人们期望的那样调用适当的方法。其他情况,例如工具提示的显示,完全由具体ChromeClient实现直接处理,而不涉及任何WebView's 委托。

于 2013-01-19T23:45:56.537 回答
1

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

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

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

于 2013-07-02T19:46:40.183 回答
-1

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

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

对于您的更新:...不,它实际上与 IE 无关,至少在 9 之前 IE 使用称为 Trident 的不同渲染引擎。

于 2013-03-07T07:47:18.770 回答