【问题标题】:Is it possible to load an external website inside a Cordova mobile app on Windows?是否可以在 Windows 上的 Cordova 移动应用程序中加载外部网站?
【发布时间】:2015-01-20 15:39:24
【问题描述】:

我已经使用

创建了默认的 Cordova 应用程序
cordova create ...
cordova platform add android
cordova platform add windows

在 index.html 中,我添加了一些指向外部网站的链接(不是本地安装的 html 文件):

<a href="http://www.example.com">External Website</a>
<a href="http://dev2.prsx.net">External Intranet Site</a>

在 Android 中,点击这些链接会在 Cordova 容器中拉出网站。这是我想要的行为。在 Windows 上,它会在外部 Internet Explorer 浏览器中拉出 example.com 页面。当我单击 dev2.prsx.net 链接时没有任何反应。从字面上看,什么都没有发生。它不打开浏览器,不以任何方式改变屏幕,Visual Studio 中没有错误消息。

需要注意的是,我想在 Cordova 容器中加载内网站点,因为外部站点还将包含我将使用的 cordova.js 文件和插件。这适用于Android。但是现在,我只想知道是否可以在 Windows 上加载外部页面。

是否可以在 Windows 平台上复制 Android 中的行为?

编辑: 我进入 package.windows.appxmanifest 文件并查看了 Capabilities 选项卡。我打开了专用网络功能,现在我的 Intranet 站点确实加载到了外部 IE 浏览器中。所以现在我唯一的问题是,我可以在 Cordova 容器中加载网站吗?

【问题讨论】:

    标签: cordova windows-phone-8 visual-studio-cordova


    【解决方案1】:

    您可以使用org.apache.cordova.inappbrowser 来打开网页,例如 var ref = window.open('http://apache.org', '_blank', 'location=yes');

    【讨论】:

    • 根据 InAppBrowser 的文档,_blank 目标在 InAppBrowser 中加载页面,而不是在 Cordova 视图中。这意味着加载的网页无权访问 Cordova API。
    【解决方案2】:

    我发现唯一可行的方法是创建一个 iFrame 或 x-ms-webview 来加载远程内容。这基本上是 InAppBrowser 为您所做的。但是,我的问题是我希望远程内容能够调用 Cordova API。为了实现这一点,我在 webview 和可以访问 API 的父本地页面之间来回传递消息。我使用 webview 上的 MSWebViewScriptNotify 事件和本文所述的 invokeScriptAsync 方法来执行此操作:http://blogs.windows.com/buildingapps/2013/10/01/blending-apps-and-sites-with-the-html-x-ms-webview/

    【讨论】:

      【解决方案3】:

      在点击事件中使用它,然后在您的应用中安装 InAppBrowser

      var ref = cordova.InAppBrowser.open('http://apache.org', '_blank', 'location=no');

      这将完全符合您的要求

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-22
        相关资源
        最近更新 更多