<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
嘿,专家们,我正在使用phonegap 2.9.0,我正在使用上面的代码在浏览器中打开链接,但它在同一个应用程序中打开了它......如何在Safari浏览器中打开?
它在同一个应用程序中打开网站,然后我无法返回应用程序,因此我需要删除该应用程序并重新安装.....
如类似问题中建议的那样,根据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
如其他帖子所回答的那样,你在不同平台上有两种不同的选项。我所做的是:
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插件
$ meteor add cordova:org.apache.cordova.inappbrowser@0.5.4
- tixastronauta<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 操作系统,请使用以下代码。
navigator.app.loadUrl("http://google.com", {openExternal : true});
window.open("http://google.com", '_system')
。不应该使用navigator.app.loadUrl
,因为它无法处理market://
类型的URL:在这种情况下,它只会关闭你的应用程序并在同一窗口中打开..这并不总是理想的选择。 - Agamemnus这些答案都不够明确,无法让外部链接在每个平台上打开。根据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');
}
});
打开“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});
是可以的。如果您有jQuery,您可以像这样拦截链接的点击:
$(document).on('click', 'a', function (event) {
event.preventDefault();
window.open($(this).attr('href'), '_system');
return false;
});
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>
将很快被移除。 - Ajay Suwalkacordova plugin add cordova-plugin-inappbrowser
。 - Plinio FM从 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 两种环境。
_blank
,并在 WebView 中打开_self
,请查看我针对 Cordova 5.1.1 的 2015 年解决方案:https://dev59.com/71wY5IYBdhLWcg3wyqWH#32227524 - Sebastien Lorber