【问题标题】:What exactly am I embedding when using WebKit in C#?在 C# 中使用 WebKit 时我到底嵌入了什么?
【发布时间】:2011-03-29 01:55:18
【问题描述】:

据我了解,Safari 和 Chrome 都使用 WebKit。有许多项目允许您嵌入 WebKit,但我真正想要的是在 C# 应用程序中嵌入 Chrome(适用于 Windows),以便我的应用程序呈现与 Windows 上的 Chrome 相同的效果。

所以当我嵌入 AwesomiumDotNet 时,渲染、CSS 支持、Javascript 引擎、字体渲染等是 Windows 版 Chrome 还是底层 WebKit 引擎的渲染?

据推测,WebKit 不处理字体和控件渲染之类的事情,或者 Windows 上的 Chrome 和 Safari 看起来相同,但实际上并非如此(Safari 会出现模糊文本以及其他差异)。

那么 WebKit 是否负责布局和计算样式,而构建在 WebKit 之上的浏览器提供实际呈现?还是苹果和谷歌之前使用的项目分叉了,这就是它们不同的原因?

【问题讨论】:

    标签: c# google-chrome safari webkit embed


    【解决方案1】:

    Chrome 无法嵌入到 C# 应用程序中。您可以查看 Chromium 源并将其转换为 COM 或 ActiveX 对象,但这可能太麻烦了。相反,您可以尝试嵌入 WebBrowser 对象,看看是否可以让 Chrome Frame 在其中工作。

    更新:我想这可能就是Awesomium is...。不确定它是封装了 Webkit 还是封装了 Chromium。

    【讨论】:

    • 答案似乎是正确的。 CEF 是 Chromium 项目的单独构建。它不允许使用系统中已经安装的Chrome(当然它不会随着Chrome的更新而更新)。
    【解决方案2】:

    WebKit 确实处理了所有这些事情,实际上它也有自己的 JS 引擎(JavaScriptCore)。它实际上也渲染了控件等,尽管方式与您预期的不同。 Safari 和 Chrome 确实看起来不同,但那是因为它们都有不同的 WebKit 实现。 AwesomiumDotNet 提供了自己的控件渲染实现(就像 Chrome 和 Safari 一样)。

    出于所有意图和目的,当您嵌入 AwesomiumDotNet 时,您将嵌入一个完整的、预构建的浏览器控件。不过,WebKit 本身并不一定需要使用完整浏览器的每个组件。例如,Chrome 实现了自己的 JavaScript 引擎 (V8)。

    希望这会有所帮助!

    【讨论】:

    • 此外,两种浏览器都可能使用自己的按钮/文本字段/等实现,并且两者都可能改变文本呈现的确切方式(例如使用平台的 Unicode 文本引擎或结合更好的东西)
    猜你喜欢
    • 2012-11-20
    • 2022-11-27
    • 2011-01-21
    • 2023-03-21
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多