我使用 PhoneGap(Cordova 2.2)
我有如下链接:
<a href="http://twitter.com/foobar" target="_blank">twitter</a>
iOS系统中打开链接会在浏览器(Safari)中打开。
但是在Android系统中,它会在webview内(我的phonegap应用程序内)打开。
有没有办法让Android的打开方式与iOS相同?
我使用 PhoneGap(Cordova 2.2)
我有如下链接:
<a href="http://twitter.com/foobar" target="_blank">twitter</a>
iOS系统中打开链接会在浏览器(Safari)中打开。
但是在Android系统中,它会在webview内(我的phonegap应用程序内)打开。
有没有办法让Android的打开方式与iOS相同?
这是我在安卓上使用 Cordova 2.2 和 jQuery mobile 让它工作的方法。
Javascript:
$('.link').live('tap', function() {
url = $(this).attr("rel");
loadURL(url);
});
function loadURL(url){
navigator.app.loadUrl(url, { openExternal:true });
return false;
}
HTML:
<a href='#' class='link' rel='http://www.someurl.com'>Go Somewhere</a>
针对Android,可以尝试以下操作:
function loadURL(url){
navigator.app.loadUrl(url, { openExternal:true });
return false;
}
HTML:
<a click="loadURL('http://twitter.com/foobar')">twitter</a>
您也可以在 config.xml
中尝试这个方法:
<access origin="*twitter.com" browserOnly="true"/>
<access origin="*" />
如果你将白名单限制在特定的URL上,那么WebView将尝试打开其内部的所有链接。但是,如果您将白名单限制为仅限特定的URL,则任何指向不在该列表中的URL的链接都将自动在外部浏览器中打开,而不是在本地WebView内部打开。例如,如果您将其限制为仅限于此...
<access origin="http://127.0.0.1*" />
如果是这样,那么原问题中提到的 Twitter 链接应该在一个新的外部浏览器中打开。
如果你想在iOS版本中使用,需要添加 target="_blank"
属性:
$(document).on('tap', 'a[target="_blank"]', function(e){
navigator.app.loadUrl(e.target.href, { openExternal: true });
return false;
});
$('a').live('tap',function(e){
// if external link then open a browser
if(String($(this).attr('href')).substring(0,4)=='http' || String($(this).attr('href')).substring(0,5)=='https'){
navigator.app.loadUrl($(this).attr('href'), { openExternal:true });
e.stopPropagation();
return false;
}
});
这个在我的iOS设备上有效
$("a[target='_blank']").on('tap touch click',function(e){
e.stopPropagation();
e.preventDefault();
window.open($(this).attr('href'), "_system");
return false;
});
PhoneGap 的导航器正常工作!
handler: function (btn, evt) {
loadURL('http://www.google.com');
}
...
function loadURL(url){
navigator.app.loadUrl(url, { openExternal:true });
return false;
}