phonegap在浏览器中打开链接

时间:2013-07-26 17:21:26

标签: html5 cordova

<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
嘿专家我正在使用phonegap 2.9.0,我正在使用上面的代码在浏览器中打开链接,但它在同一个应用程序中打开它......如何打开它的Safari浏览器?

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

12 个答案:

答案 0 :(得分:216)

根据a similar question的建议,使用JavaScript根据InAppBrowser documentation window.opentarget参数设置为_system来调用<a href="#" onclick="window.open('http://www.kidzout.com', '_system'); return false;">www.kidzout.com</a>

click

这应该有效,但更好更灵活的解决方案是拦截所有链接'window.open事件,并使用从链接属性中读取的参数调用cordova plugin add cordova-plugin-inappbrowser

请记住,您必须安装InAppBrowser插件才能实现此目的:

{{1}}

答案 1 :(得分:27)

正如其他帖子所述,不同平台有两种不同的选择。我所做的是:

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和设备插件

答案 2 :(得分:26)

<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>

适用于android和&amp; PG 3.0

答案 3 :(得分:20)

在android和iphone中有两种不同的方法可以打开URL。

FOR IOS使用以下代码。

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

并且对于Android OS使用以下代码。

navigator.app.loadUrl("http://google.com", {openExternal : true});

答案 4 :(得分:10)

最后这篇文章帮助我了解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;
}

使用Android的navigator.app.loadUrl("http://google.com", {openExternal : true});即可。

Via Cordova 3.3.0。

答案 5 :(得分:8)

这些答案中没有一个明确足以让每个平台都能打开外部链接。根据{{​​3}}:

安装

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');
    }
});

答案 6 :(得分: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

答案 7 :(得分:3)

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

只有安装了inappbrowser插件才能工作。要使用终端安装,请浏览到项目中的www文件夹,然后键入:

phonegap plugin add org.apache.cordova.inappbrowser

cordova plugin add org.apache.cordova.inappbrowser

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

答案 8 :(得分: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>

答案 9 :(得分:1)

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

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

之后,使用window.open(url,target)应按预期工作,如文档here所述。

答案 10 :(得分: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环境。

答案 11 :(得分:0)

赞:

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