【问题标题】:Cordova windows 8.1 app opening in browser instead opening in application viewCordova windows 8.1 应用程序在浏览器中打开而不是在应用程序视图中打开
【发布时间】:2015-11-13 11:25:46
【问题描述】:

我正在开发 cordova windows 应用程序。登录页面提交后,将有一个身份验证 Web 服务,它将重定向到我的应用程序中的一个特定 URL。

但在我的应用程序中,登录提交后,重定向页面在 Internet Explorer 中打开,而不是在应用程序视图本身中打开。重定向的跨域 url 未在应用程序视图中打开。但它会打开 Internet Explorer 并打开页面。它不应该像这样发生。

由于是在 Internet Explorer 浏览器中打开,而不是在应用程序视图中打开,登录没有成功。

有人可以帮我解决这个问题吗?

我们使用的是 windows 8.1 和 cordova 5.3.0 版。

我在 android 应用程序中也遇到了同样的问题。但是在 config.xml 中添加了 allow -navigation 标记(这是白名单 cordova 插件的一部分)后,重定向页面在应用程序视图本身中正确打开。但是cordova白名单插件不支持windows cordova app。

【问题讨论】:

    标签: windows cordova login submit visual-studio-cordova


    【解决方案1】:

    安装这个插件cordova-plugin-inappbrowser

    成功安装后,您的代码应该如下所示。

    代码示例:

    <button id="login">Log in</button>

    var btn = document.getElementById("login").addEventListener("click", login, false);
    
    function login() {
        var ref = cordova.InAppBrowser.open(
            'link_to_the_website',
            '_system',
            'location=yes');
    }
    

    您有三种类型的选项来加载 URL。

    • _self:如果 URL 在白名单中,则在 Cordova WebView 中打开,否则在 InAppBrowser 中打开。
    • _blank:在 InAppBrowser 中打开。
    • _system:在系统的网络浏览器中打开。

    【讨论】:

    • 嗨,乔,感谢您的宝贵回复。但是我们使用的是表单提交。我们在表单的 action 属性中有一个 Web 服务 url。我们在表单中有一个隐藏变量,其值为“lin_to_the_website”。当我们使用提交按钮提交表单时,它应该转到 webservice url,验证登录表单中给出的用户凭据,然后验证服务应该重定向到表单隐藏字段中给出的 url。它在 android 和 ios 设备中完美运行,但在 windows 8.1 应用程序中不适用。
    • 在 windows 8.1 应用程序中,即使我们不知道 Web 服务 url 是否已收到提交的登录凭据,它也不会进行身份验证。经过身份验证的 Web 服务不允许我们登录 Windows 8.1 应用程序。我们不知道为什么在 Windows 8.1 应用程序中没有发生带有所有输入元素值的表单提交。正如您在评论中提到的,我们甚至不能直接在按钮操作中提供网站 url。它应该是没有发生的带有 Web 服务调用的表单提交。有一个名为白名单的科尔多瓦插件在 Windows 8.1 应用程序中不起作用
    • 嗨乔,即使根据您的代码添加了cordova inapp浏览器,单击按钮后,外部网页也会在Internet Explorer中打开,而不是在应用程序本身中打开。这意味着当单击应用程序图标时,如果我单击带有侦听器的按钮,它将打开应用程序并在应用程序内,除了意味着靠近应用程序但在 Internet Explorer 中的应用程序之外,URL 正在打开
    • 。它的打开就像我们单击按钮后第二个浏览器在应用程序本身附近打开一样。这就像一本书的两页。一侧是按钮所在的应用程序,另一侧是打开外部链接的 Internet Explorer。我可以知道如何在应用程序本身中打开这个外部网址吗?
    • 我的外部链接应该在应用程序本身中打开。这意味着不在 IE 中,不在系统浏览器中,而是在应用程序本身中。我不应该失去对应用程序的控制,但它可以完全转到我的应用程序本身中的那个 url
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 2015-03-26
    • 2023-04-08
    • 2020-02-08
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2016-09-16
    相关资源
    最近更新 更多