116
<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>

嘿专家我正在使用phonegap 2.9.0,我正在使用上面的代码在浏览器中打开链接,但它在同一个应用程序中打开它......如何打开它Safari浏览器?

它在同一个应用程序中打开网站,然后我无法返回该应用程序,所以我需要删除该应用程序并重新安装......

4

12 回答 12

225

正如在类似问题中所建议的那样,根据InAppBrowser 文档,使用 JavaScript 调用window.open并将target参数设置为:_system

<a href="#" onclick="window.open('http://www.kidzout.com', '_system'); return false;">www.kidzout.com</a>

这应该可行,尽管更好和更灵活的解决方案是拦截所有链接的click事件,并window.open使用从链接属性读取的参数进行调用。

请记住,您必须安装 InAppBrowser 插件才能使其工作:

cordova plugin add cordova-plugin-inappbrowser
于 2013-07-26T17:28:48.690 回答
31

正如其他帖子中所回答的那样,对于不同的平台,您有两种不同的选择。我要做的是:

document.addEventListener('deviceready', onDeviceReady, false);

function onDeviceReady() {

    // Mock device.platform property if not available
    if (!window.device) {
        window.device = { platform: 'Browser' };
    }

    handleExternalURLs();
}

function handleExternalURLs() {
    // Handle click events for all external URLs
    if (device.platform.toUpperCase() === 'ANDROID') {
        $(document).on('click', 'a[href^="http"]', function (e) {
            var url = $(this).attr('href');
            navigator.app.loadUrl(url, { openExternal: true });
            e.preventDefault();
        });
    }
    else if (device.platform.toUpperCase() === 'IOS') {
        $(document).on('click', 'a[href^="http"]', function (e) {
            var url = $(this).attr('href');
            window.open(url, '_system');
            e.preventDefault();
        });
    }
    else {
        // Leave standard behaviour
    }
}

如您所见,我正在检查设备平台,并根据该平台使用不同的方法。如果是标准浏览器,我会保留标准行为。从现在开始,该解决方案将在 Android、iOS 和浏览器中正常工作,而 HTML 页面不会更改,因此它可以将 URL 表示为标准锚点

<a href="http://stackoverflow.com">

该解决方案需要 InAppBrowser 和 Device 插件

于 2014-09-25T11:02:56.550 回答
28
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>

适用于我的 android & PG 3.0

于 2013-11-29T12:24:02.903 回答
21

在 android 和 iphone 中有 2 种不同的方式打开 URL。

对于 IOS 使用以下代码。

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

对于 android 操作系统,请使用以下代码。

navigator.app.loadUrl("http://google.com", {openExternal : true});
于 2014-01-06T13:50:03.490 回答
12

这些答案都不够明确,无法在每个平台上打开外部链接。根据inAppBrowser 文档

安装

cordova plugin add cordova-plugin-inappbrowser

覆盖 window.open(可选,但为简单起见推荐)

window.open = cordova.InAppBrowser.open;

如果您不覆盖window.open,您将使用本机window.open功能,并且不能期望跨平台获得相同的结果。

使用它在默认浏览器中打开链接

window.open(your_href_value, '_system');

请注意,inAppBrowser 的目标(这是插件名称所暗示的用途)是'_blank',而不是'_system'.


如果没有上述步骤,我无法在默认浏览器应用程序跨平台中打开链接。

额外学分

这是链接的示例(实时)单击处理程序:

document.addEventListener('click', function (e) {
    if (e.target.tagName === 'A' &&
        e.target.href.match(/^https?:\/\//)) {
        e.preventDefault();
        window.open(e.target.href, '_system');
    }
});
于 2017-07-26T17:28:00.307 回答
11

最后这篇文章在 iOS 上帮助了我:http ://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/ 。

打开“CDVwebviewDelegate.m”文件并搜索“shouldStartLoadWithRequest”,然后将这段代码添加到函数的开头:

if([[NSString stringWithFormat:@"%@",request.URL] rangeOfString:@"file"].location== NSNotFound) {
    [[UIApplication sharedApplication] openURL:[request URL]];
    return NO;
}

navigator.app.loadUrl("http://google.com", {openExternal : true});安卓上使用是可以的。

通过科尔多瓦 3.3.0。

于 2014-01-09T07:03:57.753 回答
7

如果你碰巧有 jQuery,你可以像这样拦截点击链接:

$(document).on('click', 'a', function (event) {
    event.preventDefault();
    window.open($(this).attr('href'), '_system');
    return false;
});

这样就不用修改html中的链接了,可以节省很多时间。我已经使用委托进行了设置,这就是为什么您会看到它与文档对象相关联,并将“a”标签作为第二个参数。这样,无论何时添加,都将处理所有“a”标签。

当然你还是要安装 InAppBrowser 插件:

cordova plugin add org.apache.cordova.inappbrowser
于 2014-09-04T17:15:20.327 回答
3
window.open('http://www.kidzout.com', '_system');

将起作用,但前提是您安装了 inappbrowser 插件。要使用终端安装,请浏览到项目中的 www 文件夹并键入:

phonegap plugin add org.apache.cordova.inappbrowser

或者

cordova plugin add org.apache.cordova.inappbrowser

然后,您的链接将在浏览器中打开。

于 2014-03-04T11:26:47.100 回答
2

对于 Cordova 5.0 及更高版本,插件 InAppBrowser 在 Cordova 插件注册表中重命名,因此您应该使用安装它

cordova plugin add cordova-plugin-inappbrowser --save

然后使用

<a href="#" onclick="window.open('http://www.kidzout.com', '_system');">www.kidzout.com</a>

于 2016-02-17T11:55:45.657 回答
1

我正在使用 PhoneGap Build (v3.4.0),专注于 iOS,我需要在我的 config.xml 中有这个条目,以便 PhoneGap 识别 InAppBrowser 插件。

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

之后,使用 window.open(url, target) 应该可以按预期工作,如此处所述

于 2014-07-02T22:27:44.747 回答
1

我还遇到了链接没有在浏览器上打开的问题,这是我的修复步骤:

1:安装这个cordova插件。

cordova plugin add cordova-plugin-inappbrowser

2:在html中添加打开链接,如下所示。

<a href="#" onclick="window.open('https://www.google.com/', '_system', 'location=yes');" >Google</a>

3:这是最重要的一步,因此我遇到了很多问题:下载cordova.js文件并将其粘贴到www文件夹中。然后在index.html文件中对此进行引用。

<script src="cordova.js"></script>

此解决方案适用于环境 android 和 iPhone。

于 2016-09-01T05:35:26.103 回答
-2

像这样 :

<a href="#" onclick="window.open('https://www.nbatou.com', '_system'); return false;">https://www.nbatou.com</a>
于 2019-05-14T10:27:54.973 回答