我们目前有一个Cordova应用程序需要使用POST启动外部浏览器。
我们编码使用inAppBrowser插件来启动嵌入在应用程序中的浏览器。
我不喜欢使用内部浏览器,因为我会因为在默认浏览器中呈现的网页中的任何错误而被指责,并且无法在inAppBrowser中工作。
我们如何使用POST请求启动默认浏览器?
浏览器启动后,我们不需要在浏览器中设置一个后退按钮,将用户带回我们的应用程序。
我们只担心iOS和Android。我们可以在每个平台上使用不同的解决方案。
我用谷歌搜索了但是有太多相互矛盾的信息;会有一个响应,它的工作,然后另一个人回复它没有。让它上班也有一些警告;例如,似乎可以在默认浏览器中打开URL,但它也会在应用程序内浏览器中打开页面。这会让最终用户感到困惑。
[编辑]我创建了一个upwork.com项目来支付某人创建一个cordova插件,专门用于通过POST请求启动外部浏览器。请随意评论任何预期的问题。
[编辑]以下是我在iOS上测试的步骤:
答案 0 :(得分:0)
您可以通过指定目标,例如。;
,使用inAppBrowser打开应用程序外部的浏览器 var linkTarget =“_ blank”; (用于桌面;已将目标编码为Android的_system。道歉。)
[EDITED]
<a href="#" onclick="window.open(encodeURI('https://openclipart.org/'),"_system")">openclipart.org</a>;
这不会打开应用程序中的网页 - 在系统浏览器中打开。
如果在设备设置应用程序管理器页面中清除了浏览器默认值,则此链接将提示用户选择浏览器(我假设它使用以前设置的默认值,但您可能需要仔细检查特别是如果你正在使用人行横道)
还有其他目标选项,但似乎回想起 _system
没有按预期工作 - 如果_blank不起作用,请试一试
即使你有一个特殊的插件,我认为没有任何直接的方式来启动浏览器做帖子;
看起来使用dataUrl可能允许你打开浏览器做一个帖子 - 如果是这样的话,那就是最干净的方法。 (请参阅以下吴的答案中的链接)[编辑]看起来不适用于Windows移动平台;见caniuse dataURIs。
或者,您可以尝试将单独的html文件作为应用程序文件的一部分 - 将其加载到上面的新浏览器中(“file:// ..”除外)并让它运行一些启动javascript(可能使用查询字符串)为了控制)做这个职位,例如。通过jquery ajax调用。这种方法会出现安全问题 - 文件必须是浏览器可以访问的地方(可以将应用程序从内部www文件夹复制到那里 - 需要读/写权限)。不确定是否会有CORS问题等。如果不考虑窗口,我肯定会首先查看dataUrl。
答案 1 :(得分:0)
看起来像&#34; _blank&#34;无法在iOS上的外部浏览器中打开网址。
我试过这个:
1)安装inappbrowser插件
2)调用window.open(encodeURI(&#39; https://openclipart.org/&#39;),&#34; _blank&#34;);
当按下按钮时。
网址在应用中打开,而不是外部浏览器。
更新:
使用&#34; _system&#34;将在iOS上的Safari中打开网址,打开网址:
1)安装inappbrowser插件
2)调用cordova.InAppBrowser.open(encodeURI(&#39; https://openclipart.org/&#39;),&#34; _system&#34;);
不幸的是,这种方式只能用于发送get请求。 有人建议在loadstop事件上提交post表单,如下所示: Cordova InAppBrowser post form to url
当目标是&#34; _blank&#34;时,该方法有效,当目标是&#34; _system&#34;时,因为浏览器中的打开网址不是应用程序窗口,所以不会触发loadstop事件。