phonegap open link in browser

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

hey experts i am using phonegap 2.9.0 and i am using the above code to open the link in the browser but it opens it in the same app...... how to open it safari browser?

it opens the website in the same app and then i am unable to come back to the app, so i need to delete the app and install that again.....

180952 次浏览

按照 一个类似的问题中的建议,使用 JavaScript 调用 window.open,并将 target参数设置为 _system,如 InAppBrowser 文档所示:

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

This should work, though a better and more flexible solution would be to intercept all links' click events, and call window.open with arguments read from the link's attributes.

记住你必须安装 InAppBrowser 插件才能工作:

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

为我工作的机器人和 PG 3.0

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

使用以下代码。

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

并为 android 操作系统使用以下代码。

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

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

打开“ CDVwebviewgenerate.m”文件并搜索“ should dStartLoadWithRequest”,然后将下面的代码添加到函数的开头:

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.

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

将工作,但只有当你有 inappBrowerplugin 安装。要安装,使用终端,浏览到您的项目中的 www 文件夹并键入:

phonegap plugin add org.apache.cordova.inappbrowser

或者

cordova plugin add org.apache.cordova.inappbrowser

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

我正在使用 PhoneGap Build (v3.4.0) ,重点是 iOS,我需要在 config.xml 中为 PhoneGap 提供这个条目以识别 InAppBrowser 插件。

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

之后,使用 window.open (url,target)应该会按预期工作,如文档 给你所示。

如果你正好有 jQuery,你可以像这样拦截链接上的点击:

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

这样您就不必修改 html 中的链接,这样可以节省很多时间。我使用了一个委托来设置它,这就是为什么它被绑定到 document 对象上,‘ a’标记作为第二个参数。这样,所有的“ a”标签都将得到处理,而不管它们是何时添加的。

当然,您仍然需要安装 InAppBrowser 插件:

cordova plugin add org.apache.cordova.inappbrowser

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

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 插件

随着 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>

我也面临着这样的问题,链接没有打开浏览器在这里是我的修复步骤:

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。

这些答案都不够明确,不足以在每个平台上打开外部链接。根据 InAppBrowser 文档:

安装

cordova plugin add cordova-plugin-inappbrowser

Overwrite window.open (optional, but recommended for simplicity)

window.open = cordova.InAppBrowser.open;

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

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

window.open(your_href_value, '_system');

注意,inAppBrowser 的目标是 '_blank',而不是 '_system'


Without the steps above, I was not able to get links to open in the default browser app cross-platform.

额外加分

下面是一个链接的实时单击处理程序示例:

document.addEventListener('click', function (e) {
if (e.target.tagName === 'A' &&
e.target.href.match(/^https?:\/\//)) {
e.preventDefault();
window.open(e.target.href, '_system');
}
});

像这样:

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