<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
嘿专家我正在使用phonegap 2.9.0,我正在使用上面的代码在浏览器中打开链接,但它在同一个应用程序中打开它......如何打开它的Safari浏览器?
它在同一个应用程序中打开网站,然后我无法回到应用程序,所以我需要删除该应用程序并再次安装.....
答案 0 :(得分:216)
根据a similar question的建议,使用JavaScript根据InAppBrowser documentation window.open
将target
参数设置为_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>