web-dev-qa-db-ja.com

phonegap-ブラウザでリンクを開く

Phonegap(cordova 2.2)を使用しています

私はこのようなリンクを持っています:

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

IOSの場合-ブラウザ(Safari)でリンクを開きます

しかし、Android-それはwebview内(私のphonegapアプリ内)で開きます)

AndroidをiOSと同じように機能させる方法はありますか?

14
Pydev UA

これが、AndroidでCordova2.2とjQuerymobileを使用して動作させる方法です。

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>
27
someuser

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"/> 
6
Majid Laissi

User1879822によって提供されたリンクは、実際に私にとって最も有用なものでした: https://build.phonegap.com/blog/access-tags

要約すると、PhoneGapにはconfig.xml内に許可されたURLのホワイトリストがあります。これは、このようなエントリがある場合を意味します...

<access Origin="*" />

...独自のWebビュー内のallリンクを開こうとします。ただし、ホワイトリストを特定のURLのみに制限すると、そのリスト内のURLnotへのリンクは、外部ブラウザで自動的に開きます。ローカルウェブビュー。たとえば、これだけに制限すると...

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

...その後、元の質問で言及されたTwitterリンクが新しい外部ブラウザで開くはずです。

4
greghmerrill

IOSバージョンと同じように使用する場合は、target="_blank"属性:

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

この質問が少し前に尋ねられたとしても、私は私を助けた次のblodエントリについてあなたに知らせたいと思いました:

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

Androidで私がしなければならなかったのは、指定したドメインのホワイトリストを解除することだけでした。したがって、私のconfig.xmlには `がまったくありません。

1
Markus

私はまったく同じ問題を抱えていましたが、ほとんどの答えが異なるプラットフォームで混同されていることに気づきました。私のために働く解決策は 異なるプラットフォームの詳細な説明

1
Sithu

私はこれを原則として使用します:

$('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;
    }
});
1
thedjaney

Phonegapのナビゲーターが機能します!

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

.。

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

これはiOSで私のために働いた

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