2012-12-28 72 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; 
}