javascript - 从 Cordova 启动外部浏览器

标签 javascript android ios cordova post

我们目前有一个 Cordova 应用程序需要通过 POST 启动外部浏览器。

我们对其进行了编码,以使用 inAppBrowser 插件来启动嵌入在应用程序中的浏览器。

我不喜欢使用内部浏览器,因为我会因为在默认浏览器中呈现但在 inAppBrowser 中不起作用的网页中的任何错误而受到指责。

我们如何通过 POST 请求启动默认浏览器?

浏览器启动后,我们不需要在浏览器中设置后退按钮来将用户带回到我们的应用程序。

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

我用谷歌搜索过,但有很多相互矛盾的信息;会有人回答说它有效,然后另一个人回答说它无效。让它发挥作用也有一些注意事项;例如,似乎可以获取在默认浏览器中打开的 URL,但它也会使页面在应用内浏览器中保持打开状态。这会让最终用户感到困惑。

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

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

  1. 清除 iPhone 上的所有后台任务
  2. 启动包含用于启动外部浏览器的链接的应用
  3. 点击用于启动外部浏览器的链接
  4. 观察浏览器启动
  5. 双击主页键即可显示所有正在运行的应用
  6. 如果在默认浏览器中成功运行,我应该观察原始应用程序和浏览器的运行情况。
  7. 如果成功,我们还应该观察到原始应用程序没有显示目标网页。这一点很重要,因为有些人能够启动默认浏览器,但原始应用程序仍处于显示网页的状态。

最佳答案

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

var linkTarget = "_blank"; (用于桌面;已将 Android 目标编码为 _system。抱歉。)

[已编辑]

<a href="#" onclick="window.open(encodeURI('https://openclipart.org/'),"_system")">openclipart.org</a>;

这不会在应用程序中打开网页 - 在系统浏览器中打开。

如果在设备设置应用程序管理器页面中已清除浏览器默认设置,此链接将提示用户选择浏览器(我假设它否则使用之前设置的默认设置,尽管您可能需要仔细检查特别是如果您使用人行横道)

还有其他目标选项,但似乎记得 _system 未按预期工作 - 如果 _blank 不起作用,请尝试一下

即使您有特殊的插件,我认为也没有任何直接的方法可以启动浏览器来发布帖子;

看起来使用 dataUrl 可能允许您打开浏览器进行发帖 - 如果是这样,可能是最干净的方法。 (请参阅下面 Wu 的答案中的链接)[编辑] 看起来在 Windows 移动平台上不起作用;请参阅caniuse dataURIs .

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

关于javascript - 从 Cordova 启动外部浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937818/

相关文章:

android - 如何从帖子的链接从 instagram 下载图片和视频

android - 检查值以禁用/启用上下文菜单项(android)

ios - 内部 Apple Watch 应用程序开发和部署?

javascript - 调节模糊值的输入范围

javascript - 在 Intern.js Leadfoot 中,如何执行 CTRL 单击

javascript - 这个序列可以用 HTML5 完成吗?

android - 从纬度和经度坐标数组列表向谷歌地图添加多个标记

ios - 如何使单元格可编辑

ios - UINavigationController 中的 UIScrollView 中的 UIViewController 想要推送新的 Controller

javascript - 在 vue.js 中动态添加元素