2012-12-28 77 views
14

打开链接我用的PhoneGap(科尔多瓦2.2)的PhoneGap - 在浏览器

我有这样的链接:

<a href="http://twitter.com/foobar" target="_blank">twitter</a> 

在iOS上 - 它会打开链接的浏览器(Safari浏览器)

但在Android - 它打开webview内(我的phonegap应用程序内)

有没有办法让Android的工作方式与iOS相同?

回答

27

这是我得到了它的工作用科尔多瓦2.2 and jQuery mobile on Android

的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> 
+1

很高兴知道这..这工作对我来说,使用科尔多瓦2.3,在Android上的jQuery Mobile。 –

+0

直播已弃用。地狱,我认为它已被更新版本的JQ删除。我会去使用委托或on方法,但委派风格。实际上,代表也是如此,但最近更多。 –

+0

@Erik Reppen - 这是一个非常古老的答案.. – someuser

6

试试这个Android游戏:

function loadURL(url){ 
    navigator.app.loadUrl(url, { openExternal:true }); 
    return false; 
} 

HTML:

<a click="loadURL('http://twitter.com/foobar')">twitter</a> 

你也可以试试这个在您的​​3210:

<access origin="*twitter.com" browserOnly="true"/> 
+0

谢谢合作!为我工作 –

+0

用onclick替我点击了。属性点击不存在,或者呢? –

1

我用这个作为一个一般的规则:

$('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; 
    } 
}); 
+0

仅供参考,您的https比较是多余的,它会始终在第一个表达式中评估为true。 :) –

+0

实际上,它的意思是检测它是否是外部链接。但是,是的,你是对的。 :) – thedjaney

3

如果你想在iOS版本使用,具有target="_blank"属性:

$(document).on('tap', 'a[target="_blank"]', function(e){ 
    navigator.app.loadUrl(e.target.href, { openExternal: true }); 
    return false; 
}); 
1

我有同样的确切问题,我注意到大多数答案都混合了不同的platfoms。该解决方案对我的作品是Detail Explanation for different platforms

+0

请编辑您的答案,以便在此处提供所有相关文本,并提供链接作为更详细的备份信息。即使该链接无效,这也可以保持答案的有用性 – Anthon

0

这为我工作在iOS

    $("a[target='_blank']").on('tap touch click',function(e){ 
         e.stopPropagation(); 
         e.preventDefault(); 
         window.open($(this).attr('href'), "_system"); 
         return false; 
        }); 
4

由user1879822提供的链接实际上是对我来说最有用的一个:https://build.phonegap.com/blog/access-tags

总之,PhoneGap的具有白名单允许的URL在其config.xml中。这意味着,如果有这样的条目...

<access origin="*" /> 

...它会尝试打开自己的网页视图内的所有链接。但是,如果您将白名单限制为仅限特定网址,那么指向该列表中的网址而不是的任何链接都将自动在外部浏览器中打开,而不是在您本地的网页视图中打开。例如,如果你把它限制在仅此...

<access origin="http://127.0.0.1*" /> 

...然后在原来的问题提到Twitter的链接应该在打开一个新的外部浏览器。

1

即使这个问题被问前一阵子我想告诉你有关下列BLOD进入这让我出去:

https://build.phonegap.com/blog/access-tags

在Android的所有,我不得不到是unwhitelist我指定的域。所以在我的config.xml中,我根本没有任何'。

0

手机导航工程!

handler: function (btn, evt) { 
loadURL('http://www.google.com'); 
} 

...

function loadURL(url){ 
navigator.app.loadUrl(url, { openExternal:true }); 
return false; 
} 
-1

使用PhoneGap的3.5

<a href="javascript:loadURL('http://www.lavidaenbinario.com');" class="link ">Example</a> 

function loadURL(url){ 
    navigator.app.loadUrl(url, { openExternal:true }); 
    return false; 
}