2010-08-12 7 views
6

Wie ich es verstehe, verwenden Safari und Chrome WebKit. Es gibt viele Projekte, mit denen Sie WebKit einbetten können, aber ich möchte, dass Chrome (für Windows) in eine C# -App eingebettet wird, damit meine Anwendung identisch mit Chrome unter Windows gerendert wird.Was genau verbinde ich bei der Verwendung von WebKit in C#?

Also, wenn ich, z. B. AwesomiumDotNet, einbetten, wird das Rendering, CSS-Unterstützung, Javascript-Engine, Schrift-Rendering usw. das von Chrome für Windows oder der zugrunde liegenden WebKit-Engine sein?

Vermutlich behandelt WebKit nicht Dinge wie Font- und Control-Rendering oder Chrome und Safari unter Windows würden identisch aussehen, und doch tun sie das nicht (Safari hat diesen unscharfen Text unter anderen Unterschieden).

Ist also WebKit für das Layout und die berechneten Styles verantwortlich, während der auf WebKit basierende Browser das eigentliche Rendering bereitstellt? Oder ist es mehr, dass sich die Projekte von Apple und Google vor einiger Zeit gespalten haben und sie deshalb anders sind?

Antwort

7

WebKit behandelt all diese Dinge und hat sogar seine eigene JS-Engine (JavaScriptCore). Es macht auch die Kontrollen und so, obwohl auf eine andere Weise, als Sie vielleicht erwarten. Safari und Chrome sehen tatsächlich anders aus, aber das liegt daran, dass beide unterschiedliche Implementierungen von WebKit haben. AwesomiumDotNet bietet eine eigene Implementierung (genau wie Chrome und Safari) des Kontrollrenderings.

Wenn Sie AwesomiumDotNet einbetten, integrieren Sie praktisch ein vollständiges, vordefiniertes Browser-Steuerelement. WebKit selbst muss jedoch nicht unbedingt alle Komponenten des vollständigen Browsers verwenden. Zum Beispiel implementiert Chrome eine eigene JavaScript-Engine (V8).

Hoffe, das hilft!

+1

Beide Browser verwenden wahrscheinlich auch eigene Implementierungen von Schaltflächen/Textfeldern/etc, und beide können exakt das Text Rendering ändern (zB Unicode-Text-Engine der Plattform oder etwas Besseres) –

-2

Chrome kann nicht in eine C# -Anwendung eingebettet werden. Sie könnten die Quelle Chromium betrachten und sie in ein COM- oder ActiveX-Objekt konvertieren, aber das ist wahrscheinlich zu mühsam. Stattdessen könnten Sie versuchen, das WebBrowser Objekt einzubetten und zu sehen, ob Sie Chrome Frame erhalten können, um darin zu arbeiten.

Update: Ich denke, vielleicht ist das was Awesomium is.... Nicht sicher, ob es Webkit umschließt oder Chromium umhüllt.

+0

https: // github .com/chillitom/CefSharp – chillitom

+0

Die Antwort scheint richtig zu sein. CEF ist eine separate Version des Chromium-Projekts. Es ist nicht möglich, Chrome bereits im System installiert zu verwenden (und es wird natürlich nicht mit der Aktualisierung von Chrome aktualisiert). – Yahor