【问题标题】:Building a Windows app w/ embedded browser & JavaScript 'hooks'使用嵌入式浏览器和 JavaScript“挂钩”构建 Windows 应用程序
【发布时间】:2011-03-03 03:50:55
【问题描述】:

我为客户建立了一个 PHP/JavaScript 网站。然后他们要求我复制它,除了作为独立的 Mac 应用程序。我使用一个结合了嵌入式 Web 服务器、PHP 和“WebView”的应用程序做到了这一点——我可以将它嵌入到标准应用程序窗口中的 WebKit Web 浏览器的 Cocoa 版本。这一切都很好 - 我必须重用 10,000 多行 PHP/JS 代码,这节省了几个月在“本机”代码中重新实现它的时间。

现在他们想要一个 Windows 等价物。我有理由相信我可以让 PHP 和 Web 服务器正常工作。而且我知道嵌入基本的 IE 功能非常容易。

但是...在我的 Mac 设置中,WebView(通过 windowScriptObject 的东西)使我能够从 C++ 调用 JavaScript 方法。例如,我可能会从 C++ 调用 JavaScript 方法来更新屏幕。同样,我可以进行设置,以便浏览器中的 JavaScript 调用可以触发 C++ 方法 - 例如,我使用它让用户单击“浏览”并使用真实的标准文件浏览器选择文件路径。

所以我的问题是,是否有基于 Windows 的嵌入式浏览器设置可以让我以同样的方式与 JavaScript 交互?

(JavaScript WebKit 接口在这里有更详细的描述:http://lipidity.com/apple/javascript-cocoa-webkit/

【问题讨论】:

    标签: javascript c++ windows internet-explorer webkit


    【解决方案1】:

    也许可以尝试使用 Appcelerator Titanium 之类的东西,这样当您的客户说他们希望它在 Linux、iPhone 或 Android 上运行时,您就可以做好准备。

    引用Wikipedia:“Appcelerator Titanium 是一个平台 用于开发移动和桌面 使用网络技术的应用程序。 [...] 支持基于标准的网络 技术:HTML、CSS 和 Javascript 与 PHP 一起在所有平台上, 用于桌面平台的 Python 和 Ruby。 综合支持流行 JavaScript 和 AJAX 框架 包括 jQuery、YUI、MooTools、 Scriptaculous 等。”

    听起来是完成这项工作的完美工具。

    【讨论】:

      【解决方案2】:

      当您嵌入 Web 浏览器控件 (IE) 时,您的应用程序代码可以简单地调用 execScript (http://msdn.microsoft.com/en-us/library/ms536420(v=vs.85).aspx)窗口对象。您可以使用脚本中的 window.external 对象和应用程序中的 ObjectForScripting(或 C++ 等效项)来调用应用程序。

      【讨论】:

        【解决方案3】:

        也许 Qt 对你的情况有好处,你也有 QtScript 并且可以用 evaluateJavaScript 注入 javascript

        【讨论】:

          【解决方案4】:

          我在网上找到了一个很好的例子,用于在我的嵌入式浏览器中从 C 调用 JS...基本上使用 COM-ish 方法,让您从脚本对象获取 DISPID,然后使用 Invoke() 方法.这很好用。

          但事实证明,我还需要从我的 JS 代码中调用 C++ 函数。看起来这是可能的,经过几个小时的折腾,我想我几乎拥有了它 - 就像上面的相反 - 你创建一个 COM 对象,然后将它挂钩到浏览器的脚本对象 - 但最后我无法关闭交易 - 我不断收到“图书馆未注册”错误。老实说,我对 COM 的了解还不足以做到这一点。

          然后我,为了它,尝试构建我的第一个 C# 应用程序。大约 20 分钟后,我有了一个在浏览器上运行的应用程序,我既可以在其中调用 JS,也可以让浏览器调用 C# 方法。天哪。经过这次经历后,我对 .NET 充满信心,但对 90 年代的 Microsoft 技术已确认不相信。

          【讨论】:

            【解决方案5】:

            为了完整起见,我想提一下我的 WebKit Windows 移植版,它包含了 Mac 上 WebKit 的各种跨层功能。

            我发布了一些example code,展示了如何将 WebKit 嵌入到原生 WinAPI 应用程序中,并附有 JavaScript->C++ 和 C++->JavaScript 示例。

            该示例是一个针对大型应用程序的小型测试用例,该应用程序将嵌入式 WebViews 用于主要 UI 组件。我可以确认您所做的不仅是可能的,而且是构建应用程序的好方法。

            【讨论】:

              猜你喜欢
              • 2011-09-22
              • 1970-01-01
              • 2020-02-04
              • 2012-02-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-03-13
              • 2016-07-01
              相关资源
              最近更新 更多