<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>
Run Code Online (Sandbox Code Playgroud)
嘿专家我正在使用phonegap 2.9.0,我正在使用上面的代码在浏览器中打开链接,但它在同一个应用程序中打开它......如何打开它的Safari浏览器?
它在同一个应用程序中打开网站,然后我无法回到应用程序,所以我需要删除该应用程序并再次安装.....
fre*_*osh 219
作为建议类似的问题,使用JavaScript来调用window.open与target设置为参数_system,按照该InAppBrowser文档:
<a href="#" onclick="window.open('http://www.kidzout.com', '_system'); return false;">www.kidzout.com</a>
Run Code Online (Sandbox Code Playgroud)
这应该有效,但更好,更灵活的解决方案是截取所有链接的click事件,并window.open使用从链接属性读取的参数调用.
请记住,您必须安装InAppBrowser插件才能工作:
cordova plugin add cordova-plugin-inappbrowser
Run Code Online (Sandbox Code Playgroud)
小智 27
<a onclick="navigator.app.loadUrl('https://google.com/', { openExternal:true });">Link</a>
Run Code Online (Sandbox Code Playgroud)
适用于android和PG 3.0
krz*_*chu 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
}
}
Run Code Online (Sandbox Code Playgroud)
因此,您可以看到我正在检查设备平台,并根据我使用不同的方法.如果是标准浏览器,我会留下标准行为.从现在开始,该解决方案将在Android,iOS和浏览器中正常运行,而HTML页面将不会更改,因此它可以将URL表示为标准锚点
<a href="http://stackoverflow.com">
Run Code Online (Sandbox Code Playgroud)
该解决方案需要InAppBrowser和Device插件
Has*_*que 21
在android和iphone中有两种不同的方式来打开URL.
对于IOS使用以下代码.
window.open("http://google.com", '_system');
Run Code Online (Sandbox Code Playgroud)
并为Android OS使用以下代码.
navigator.app.loadUrl("http://google.com", {openExternal : true});
Run Code Online (Sandbox Code Playgroud)
myt*_*her 10
最后这篇文章帮助我在iOS上:http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/.
打开"CDVwebviewDelegate.m"文件并搜索"shouldStartLoadWithRequest",然后将此代码添加到函数的开头:
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
覆盖window.open(可选,但为简单起见,建议使用)
window.open = cordova.InAppBrowser.open;
Run Code Online (Sandbox Code Playgroud)
如果不覆盖window.open,则将使用本机window.open函数,并且不能期望跨平台获得相同的结果.
使用它在默认浏览器中打开链接
window.open(your_href_value, '_system');
Run Code Online (Sandbox Code Playgroud)
请注意,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');
}
});
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您碰巧有jQuery,可以截取链接上的点击,如下所示:
$(document).on('click', 'a', function (event) {
event.preventDefault();
window.open($(this).attr('href'), '_system');
return false;
});
Run Code Online (Sandbox Code Playgroud)
这样您就不必修改html中的链接,这可以节省大量时间.我已经使用委托设置了这个,这就是为什么你看到它被绑定到文档对象,'a'标记作为第二个参数.这样,无论何时添加标签,都将处理所有'a'标签.
当然,您仍然需要安装InAppBrowser插件:
cordova plugin add org.apache.cordova.inappbrowser
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165956 次 |
| 最近记录: |