1

WebKitのソースコードとドキュメントでは、「Chromeクライアント」という用語を使用して、フロントエンドディスプレイに使用される特定のクラスを説明することがよくあります。「Chrome」という用語は、Google Chromiumポートとは無関係のように見えるため、混乱しています。「chrome」と「client」という検索用語は必然的にGoogleChromeブラウザに関連する結果を表示するか、単にWebKitソースコードへのリンクを表示するため、Webでこれに関する情報を検索することは困難です。

誰かがChromeクライアントとは何か、そしてこの文脈で「Chrome」が何を意味するのか説明できますか?

4

3 に答える 3

5

ChromeClientは、WebCoreがWebCore上に構築された複数のWebKitAPIレイヤーと対話するために使用する抽象インターフェースです。その機能は、特定のWebCoreを含むビューのユーザーインターフェイス(別名「クロム」)の側面を中心にしていますPage。WebCore上に構築された多数の個別のAPIレイヤーがあり、各APIレイヤーがユーザーインターフェイスを処理する方法は、同じOSで実行されているAPIレイヤー間でも異なる可能性があるため、この抽象化は重要です(たとえば、WebKitとWebKit2のニーズはまったく異なります)。 )。

簡単な例として、ChromeClient::runJavaScriptAlertはJavaScriptalert関数によって呼び出されます。runJavaScriptAlertfor CocoaWebViewクラスの実装は、WebUIDelegate予想どおりに適切なメソッドを呼び出すだけです。ツールチップの表示などの他のケースは、の代表者ChromeClientを関与させることなく、具体的な実装によって完全に直接処理されます。WebView

于 2013-01-19T23:45:56.537 に答える
1

ChomeClientは、アラート、ポップアップウィンドウ、プロンプト、window(window.open)などのGUI要素の表示を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 に答える