2013-01-04 98 views
1

WebKit源代碼和文檔經常使用術語「Chrome客戶端」來描述用於前端顯示的某個類。我對「Chrome」一詞的含義感到困惑,因爲它似乎與Google Chromium端口無關。很難在網絡上搜索任何關於此的信息,因爲搜索詞「chrome」和「client」不可避免地會帶來與Google Chrome瀏覽器相關的results,或者只是給我提供指向WebKit源代碼的鏈接。關於WebKit的「Chrome Client」是什麼?

任何人都可以解釋Chrome客戶端是什麼,以及在這種情況下「Chrome」的含義是什麼?

+2

「Chrome」通常用於描述不是從用戶正在訪問的頁面(如由瀏覽器程序本身提供的頁面)派生的任何用戶界面元素。對於更具體的解釋,也許你可以提供一個鏈接到你看過這個術語的地方之一? – SingleNegationElimination

回答

5

ChromeClient是WebCore用來與構建在WebCore之上的多個WebKit API層進行交互的抽象接口。其功能集中在包含特定WebCore Page的視圖的用戶界面(又名「chrome」)方面。這種抽象很重要,因爲在WebCore之上建立了許多單獨的API層,並且每個API層如何處理用戶界面甚至可以在運行在同一OS上的API層之間有所不同(例如,WebKit和WebKit2有不同的需求)。

作爲一個簡單的例子,ChromeClient::runJavaScriptAlert被JavaScript alert函數調用。執行runJavaScriptAlert for the Cocoa WebView class只需調用相應的WebUIDelegate方法就可以了。其他情況下,例如工具提示的顯示,完全由具體的ChromeClient實施來處理,而不涉及WebView的任何代表。

-1

Webkit是一個Web瀏覽器呈現渲染引擎使用Safari和Chrome(其中,但這些是流行的)。

CSS選擇器上的-webkit前綴是隻有此引擎打算處理的屬性,非常類似於-moz屬性。我們中的很多人都希望這消失,例如-webkit-border-radius將被標準的border-radius所取代,並且對於多個瀏覽器,您不需要多個規則來實現相同的功能。這實際上是「預定義」功能的結果,這些功能旨在不影響標準版本。

對於你的更新:......不,它與IE真的沒有關係,IE至少在9之前使用了一個叫做Trident的不同渲染引擎。

1

ChomeClient是一個代理向WebKit端口顯示警報,彈出窗口,提示,窗口(window.open)等GUI元素的接口。

基本上我們可以說窗口相關的操作一樣滾動,通過請求無效窗口部分重新繪製,..等

每個WebKit的端口提供通過重寫ChromeClient interaface自己的實現。例如Qt可能有ChromeClientQt.h & ChromeClientQt.cpp & GTK可能有ChromeClientGTk.h & ChromeClientGTk.cpp。

+0

我可以知道爲什麼是-1嗎?這完全不相關嗎?它是否比以前作者的評論更無關緊要? –

相關問題