如何在跨平台应用程序中嵌入 Web 浏览器控件?
Posted
技术标签:
【中文标题】如何在跨平台应用程序中嵌入 Web 浏览器控件?【英文标题】:How to embed a web browser control in a cross-platform application? 【发布时间】:2011-02-12 20:28:53 【问题描述】:我需要快速编写这个应用程序:一个简单的窗口 运行 html 页面的 Web 浏览器控件。 浏览器 UI(例如导航按钮)应该被禁止显示。
作为 .net 开发人员,我会将 WebBrowser OCX 嵌入到 Windows 窗体中。 但这也必须在 Mac 上运行!
我找到了以下跨平台候选人。 你会选择哪一个(在简单性、稳定性、社区支持等方面):
wxWidgets:http://www.kirix.com/labs/wxwebconnect.html
QT:http://www.youtube.com/watch?v=Ee8eRwjbcFk&feature=related
单声道:http://www.mono-project.com/WebBrowser
【问题讨论】:
感谢响应者。我终于使用了 Qt,它在两个平台上都具有最佳外观,并且带有 LGPL 选项。 【参考方案1】:QtWebkit:
WebKit 的 Qt 端口目前可以在 Linux(包括 Maemo)、Windows、Mac OS X 和 Symbian 上编译和运行。
点击here获取构建说明。
随端口一起构建了一个非常简单的测试浏览器。
【讨论】:
【参考方案2】:另一种选择可能是使用Eclipse Standard Widget Toolkit 将其编写为Java 应用程序。这包括嵌入 IE、Safari 或 Firefox 的浏览器控件,具体取决于当前平台,并且通常在 OS X 上表现良好。
【讨论】:
【参考方案3】:如果您主要是 .NET 开发人员并且不太关心制作一个集成良好的 Mac 应用程序(在 Mac 用户期望的所有方面都表现得像 Mac 应用程序),那么 Mono 可能是最佳选择.考虑到你的问题空间,这听起来就像你在哪里。也就是说,如果它适用于您的问题,请特别注意 WebBrowser 页面的此限制:
Mono 网络浏览器目前缺少 支持window.external, 允许 javascript 代码的桥 嵌入浏览器进行通信 使用托管世界 ObjectForScripting。
QT 非常成熟,如果你想用 C++ 开发它,它是一个很好的平台。请记住,如果这是商业应用程序,则需要支付许可费。
我玩过一些 wxWidgets。这里最大的优势是它可能是最小的发行版,因为你只需要包含你需要的东西。如果所有你需要的是网络浏览器,我会看看这个,但根据我的经验,很难让 wxWidgets 程序看起来不错或在 Mac 上正常运行(或在 Windows 上)。
【讨论】:
Qt 实际上在 LGPL 下可用有一段时间了,因此如果您想保持代码封闭,则无需购买商业许可证。如果您只有 .Net 的使用经验并且您不想让它看起来不错,我同意 Mono 可能是最佳选择。 @Kitsune 感谢您提供有关 LGPL 的说明。我已经过时了大约 18 个月。【参考方案4】:为什么不使用嵌入式 Webkit?
【讨论】:
WebKit 本身不足以构建这样的跨平台页面查看器。你还需要生成一个窗口等。【参考方案5】:既然你有(根据你的帖子做出的假设).Net 经验,我会选择 Mono。
您是否考虑过 Adobe AIR? http://www.adobe.com/products/air/
【讨论】:
以上是关于如何在跨平台应用程序中嵌入 Web 浏览器控件?的主要内容,如果未能解决你的问题,请参考以下文章