如何在本机网络浏览器中打开链接(常见建议无效)?

How to open links in a native web browser (common suggestion did not work)?

PhoneGap (Adobe® PhoneGap™ Build) 打开外部 link 需要很长时间,并且不会在本机 phone 浏览器中打开。

嗯,这是我的问题。首先,如果我在我的应用程序中单击外部 link,则需要很长时间才能显示结果。因此,例如,如果我单击 link 几秒钟后什么也没有发生,那么该网站将显示在应用程序本身中。如果花费这么长时间,每个普通用户都会认为有问题。看起来完整的网站在显示之前首先加载,这对我的应用程序很好但对外部 links.

本机浏览器问题

但是,无论如何,我不喜欢在应用程序视图中打开外部网站 link。我喜欢在 phone.

的本机浏览器中打开它们

对于这个问题已经存在几个问题和建议,其中许多太旧以至于可能已经过时,其中许多甚至堆栈溢出。但要总结答案。建议不要直接打开链接,而是通过点击事件打开链接,防止默认设置,而不是打开一个新的 window with javascript window.open('http://www.myurl.nl', '_system');

还有建议设置标签。 对于 _system,您将需要 inAppBrowser 插件 config.xml.

中的 Adob​​e Build 上 <gap:plugin name="org.li8.inappbrowser" version="0.1" /> 可用的插件

因此,我的 link 可以在任何桌面和移动浏览器上的新 Window(不是选项卡)中打开。但是当我将它构建为应用程序并在 Android 上启动它时,它总是在应用程序而不是本机浏览器中打开 links。无论我尝试过什么设置组合。我看不出每次尝试有什么不同。 (目前正在测试 Android,但接下来会进行 Iphone 测试。

有人可以给我一个关于这个问题的最新答案吗?

在您的 config.xml 中,添加:

<gap:plugin name="org.apache.cordova.inappbrowser" />

然后对于链接,使用:

<a target="_blank" href="https://www.example.com">Example page</a>

至少这对我有用。

我最近使用 PhoneGap Build 开发了一个移动应用程序,因此您可以确定以下解决方案是最新的。

无论你想使用网页视图还是外部浏览器,都需要将inAppBrowser插件添加到config.xml

<gap:plugin name="org.apache.cordova.inappbrowser">

现在,如果您想打开本机(外部)网络浏览器,请使用此命令:

window.open('http://www.google.com', '_system');

如果你想打开嵌入式浏览器使用这个:

window.open('http://www.google.com', '_blank', 'location=yes');

要管理用户操作和嵌入式浏览器出现之间的延迟,您可以使用 loadstop 事件在浏览器完全加载后显示它:

    Mask('show'); /* a function to show some loading animation*/
    var inAppBrowser = window.open(link, '_blank','hidden=yes');
    inAppBrowser.addEventListener('loadstop', function(event) {
        //show after complete load
        inAppBrowser.show();
        Mask('hide'); /* hide the loading mask*/

    });