【发布时间】:2015-08-25 15:54:51
【问题描述】:
我有一个 Cordova 应用程序,它是一个带有单个 HTML 文件的单页应用程序。
所有链接都应在系统浏览器中打开。我不想要一个“嵌入式”InAppBrowser,而是真正的本机系统/外部浏览器。
我们可以在任何地方找到使用 InAppBrowser 的代码示例,例如:
window.open('http://apache.org', '_system');
但是为什么我们需要安装 InAppBrowser,即使我们甚至不打算使用嵌入式浏览器?
关于链接的目标,有人真的可以解释 WebView 的行为吗?目前尚不清楚它应该用target=_blank 做什么,但除了打开一个新的浏览器窗口之外,我看不到它还能做什么。
请注意,问题似乎只出在 iOS 上,因为使用 target=_blank 的 Android(带有 Crosswalk 插件)似乎总是可以正常工作并在新的本机浏览器窗口中打开。
【问题讨论】:
-
嗯,据我了解,您始终处于网络视图中。现在您要查询主系统浏览器。现在,正常的 _target 空白可能并不总是有效,尤其是在 cordova 支持的所有平台上。为了克服这个问题,我们使用通过原生层调用浏览器的 inappbrowser。通过这种方式,我们可以保证在所有受支持的平台上都能找到有效的解决方案。
-
@SaniYusuf 但是为什么不创建一个不是“InAppBrowserPlugin”并且在系统浏览器中打开所有带有_blank的链接的插件呢?我觉得该插件正在尝试解决 2 个不同的问题,其中一个没有在插件名称中明确说明(但不太确定,因为它没有真正解释)
-
@jcesarmobile 我做到了,据我所知,实际上它使 Android 上的所有 Ajax 请求都失败了。这里也没有记录:github.com/apache/cordova-plugin-whitelist
-
@jcesarmobile 您还可以在源代码插件中看到,此选项仅对 Android 本机代码有效,根据此警告日志,不推荐使用
allow-access:Found <access launch-external> within config.xml. Please use <allow-intent> instead.跨度> -
对不起,评论前没试过,我现在试过了,你是对的。问题是,cordova 是一个用于创建移动应用程序的框架,因此,所有资源都应该是本地的,外部链接没有真正意义(至少对我而言)。如果您需要它们,那么您有 inAppBrowser 插件,它允许您在 inAppBrowser 或系统浏览器中打开链接。确实有点奇怪,您必须安装“inAppBrowser”插件才能启动外部浏览器,但是您可以创建自己的插件来启动没有 inAppBrowser 的浏览器
标签: cordova phonegap-plugins ionic inappbrowser