<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
嘿专家,我正在使用phonegap 2.9.0,我正在使用上面的代码在浏览器中打开链接,但它在同一应用程序中打开了……如何打开Safari浏览器?
它会在同一应用程序中打开网站,然后我无法返回到该应用程序,因此我需要删除该应用程序并重新安装.....
<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
嘿专家,我正在使用phonegap 2.9.0,我正在使用上面的代码在浏览器中打开链接,但它在同一应用程序中打开了……如何打开Safari浏览器?
它会在同一应用程序中打开网站,然后我无法返回到该应用程序,因此我需要删除该应用程序并重新安装.....
Answers:
作为建议类似的问题,使用JavaScript来调用window.open
与target
参数设置为_system
当按照InAppBrowser文档:
<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
正如在其他帖子中回答的那样,针对不同的平台,您有两种不同的选择。我要做的是:
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和设备插件
$ meteor add cordova:org.apache.cordova.inappbrowser@0.5.4
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>
适用于Android和PG 3.0
有两种方法可以在android和iphone中打开URL。
对于IOS,请使用以下代码。
window.open("http://google.com", '_system');
对于Android OS,请使用以下代码。
navigator.app.loadUrl("http://google.com", {openExternal : true});
window.open("http://google.com", '_system')
。您不应该使用navigator.app.loadUrl
,因为它不适用于market://
URL:在这种情况下,它只会关闭您的应用程序并在同一窗口中打开。
最后,这篇文章在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});
Android上使用时可以。
通过Cordova 3.3.0。
这些答案都不够明确,无法在每个平台上打开外部链接。根据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');
}
});
如果您碰巧有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
window.open('http://www.kidzout.com', '_system');
仅当您安装了inappbrowser插件时才有效。要使用终端进行安装,请浏览至项目中的www文件夹并键入:
phonegap plugin add org.apache.cordova.inappbrowser
要么
cordova plugin add org.apache.cordova.inappbrowser
然后,您的链接将在浏览器中打开。
phonegap local <command>
已被弃用。该命令已委托给phonegap <command>
。该命令phonegap local <command>
将很快被删除。
cordova plugin add cordova-plugin-inappbrowser
。
我正在使用专注于iOS的PhoneGap Build(v3.4.0),并且需要在config.xml中具有此条目,以便PhoneGap能够识别InAppBrowser插件。
<gap:plugin name="org.apache.cordova.inappbrowser" />
在此之后,使用window.open(URL,目标)应该按预期工作,如记录在这里。
m also using PhoneGap Build (v3.5.x) and added the plugin via the config.xml. But what i get is an InAppBrowser without controls an cannot call the safari browser. I
只是在使用window.open()。有什么建议吗?
我还遇到了无法在浏览器上打开链接的问题,这是我的修正步骤:
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环境。
_blank
外部浏览器和_self
WebView,请查看我的2015年Cordova 5.1.1解决方案:stackoverflow.com/a/32227524/82609