Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Cordova启动外部浏览器_Javascript_Android_Ios_Cordova_Post - Fatal编程技术网

Javascript 从Cordova启动外部浏览器

Javascript 从Cordova启动外部浏览器,javascript,android,ios,cordova,post,Javascript,Android,Ios,Cordova,Post,我们目前有一个Cordova应用程序,需要启动带有POST的外部浏览器 我们已经将其编码为使用inAppBrowser插件启动嵌入应用程序中的浏览器 我不喜欢使用内部浏览器,因为我会被指责在默认浏览器中呈现的网页中有任何错误,并且在inAppBrowser中不起作用 如何使用POST请求启动默认浏览器 一旦浏览器启动,我们不需要在浏览器中有一个后退按钮,它会将用户带回我们的应用程序 我们只担心iOS和Android。我们可以在每个平台上使用不同的解决方案 我在谷歌上搜索过,但有太多相互矛盾的信息

我们目前有一个Cordova应用程序,需要启动带有POST的外部浏览器

我们已经将其编码为使用inAppBrowser插件启动嵌入应用程序中的浏览器

我不喜欢使用内部浏览器,因为我会被指责在默认浏览器中呈现的网页中有任何错误,并且在inAppBrowser中不起作用

如何使用POST请求启动默认浏览器

一旦浏览器启动,我们不需要在浏览器中有一个后退按钮,它会将用户带回我们的应用程序

我们只担心iOS和Android。我们可以在每个平台上使用不同的解决方案

我在谷歌上搜索过,但有太多相互矛盾的信息;将有一个响应,它的工作,然后另一个人回答说,它没有。让它发挥作用也有一些警告;例如,似乎可以在默认浏览器中打开URL,但也可以在应用程序内浏览器中打开页面。这会让最终用户感到困惑

[编辑]我创建了一个upwork.com项目,付钱给某人创建一个cordova插件,专门用于通过POST请求启动外部浏览器。请随意评论这样做的任何预期问题

[编辑]以下是我在iOS上测试的步骤:

  • 清除iPhone上的所有后台任务
  • 启动包含用于启动外部浏览器的链接的应用程序
  • 单击要启动外部浏览器的链接
  • 观察浏览器是否启动
  • 双击home键以显示所有正在运行的应用程序
  • 如果在默认浏览器中成功运行,我应该观察原始应用程序和浏览器的运行情况
  • 如果成功,我们还应该注意到原始应用程序没有显示目标网页。这一点很重要,因为有些人可以启动默认浏览器,但原始应用程序仍处于显示网页的状态

  • 通过指定目标,您可以使用inAppBrowser在应用程序外部打开浏览器,例如:

    var linkTarget=“_blank”;(用于桌面;已将目标编码为Android系统。抱歉。)

    [已编辑]

    <a href="#" onclick="window.open(encodeURI('https://openclipart.org/'),"_system")">openclipart.org</a>;
    
    这不会在应用程序中打开网页-在系统浏览器中打开

    如果在设备设置应用程序管理器页面中清除了浏览器默认设置,则此链接将提示用户选择浏览器(我假设它使用先前设置的默认设置,但您可能需要再次检查,尤其是在使用人行横道时)

    还有其他目标选项,但似乎回忆起系统未按预期工作-如果blank不工作,请尝试一下

    我认为,即使你有一个特殊的插件,也没有任何直接的方式来启动一个做文章的浏览器

    看起来使用dataUrl可能允许您打开浏览器进行post-如果是这样的话,可能是最干净的方法。(见下面吴回答中的链接)[编辑]看起来在Windows mobile平台上不起作用;看

    或者,您可以尝试将一个单独的html文件作为应用程序文件的一部分-如上所述将其加载到新浏览器中(除了“file://..)并让它运行一些启动javascript(可能使用querystring进行控制)来执行post,例如通过jQueryAjax调用。此方法将存在安全问题-文件必须位于浏览器可以访问的位置(可以让应用程序从内部www文件夹将其复制到该位置-需要读/写权限)。不确定是否会出现CORS问题等。如果不考虑windows,我肯定会首先查看dataUrl。

    看起来“\u blank”无法在iOS上的外部浏览器中打开url。 我试过这个:
    1) 安装inappbrowser插件。
    2) 调用window.open(encodeURI(“”),“_blank”); 当按下按钮时。
    url在应用程序中打开,而不是在外部浏览器中打开。

    更新:
    使用“\u系统”将在iOS上的Safari中打开url,以打开url:
    1) 安装inappbrowser插件。
    2) 调用cordova.InAppBrowser.open(encodeURI(“”),“\u系统”)


    不幸的是,这种方法只能用于发送get请求。 有些人建议在loadstop事件中提交post表单,如下所示:


    当目标为“\u blank”,当目标为“\u system”时,该方法起作用,因为在浏览器中打开的url不是应用程序窗口,所以不会触发loadstop事件

    您在什么平台上进行了测试?您包含的“Cordova InAppBrowser post form to url”链接有一个更深入的答案,其中有人描述了使用dataUrl发布数据-这不需要loadstop事件/InAppBrowser实例。(您可能不想按说明清除用户的主缓存,尤其是在您使用_系统的情况下)再次修改了答案。对于最初在_blank上出现的错误表示歉意。您在什么平台上进行了测试?您正在做的事情中是否有吴没有做的事情使您的测试成功?例如,href=“#”有什么不同吗?谢谢Bob,当我使用_systemreplace _blank时,它是有效的。不幸的是,这种方法只有在发送get请求时才有效。