116
<a target="_blank" data-rel="external" href="http://www.kidzout.com">www.kidzout.com</a>

ちょっと専門家私はphonegap 2.9.0を使用しています.ブラウザでリンクを開くために上記のコードを使用していますが、同じアプリで開きます....サファリブラウザを開く方法は?

同じアプリでウェブサイトを開くと、アプリに戻ることができないので、アプリを削除して再度インストールする必要があります.....

4

12 に答える 12

31

他の投稿で回答されているように、プラットフォームごとに 2 つの異なるオプションがあります。私がすることは:

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
    }
}

ご覧のとおり、デバイス プラットフォームをチェックしており、それに応じて別の方法を使用しています。標準ブラウザの場合、標準の動作のままにします。今後、ソリューションは Android、iOS、およびブラウザーで正常に動作しますが、HTML ページは変更されないため、URL を標準のアンカーとして表すことができます。

<a href="http://stackoverflow.com">

このソリューションには、InAppBrowser およびデバイス プラグインが必要です

于 2014-09-25T11:02:56.550 に答える
11

最後に、この投稿は iOS で役立ちます: http://www.excellentwebworld.com/phonegap-open-a-link-in-safari-or-external-browser/

「CDVwebviewDelegate.m」ファイルを開き、「shouldStartLoadWithRequest」を検索してから、次のコードを関数の先頭に追加します。

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での使用中はOKです。

Cordova 3.3.0 経由。

于 2014-01-09T07:03:57.753 に答える
7

jQuery を使用している場合は、次のようにリンクのクリックをインターセプトできます。

$(document).on('click', 'a', function (event) {
    event.preventDefault();
    window.open($(this).attr('href'), '_system');
    return false;
});

これにより、html 内のリンクを変更する必要がなくなり、時間を大幅に節約できます。私はデリゲートを使用してこれを設定しました。そのため、2 番目の引数として「a」タグを使用してドキュメント オブジェクトに関連付けられていることがわかります。このようにして、いつ追加されたかに関係なく、すべての「a」タグが処理されます。

もちろん、InAppBrowser プラグインをインストールする必要があります。

cordova plugin add org.apache.cordova.inappbrowser
于 2014-09-04T17:15:20.327 に答える
3
window.open('http://www.kidzout.com', '_system');

inappbrowser プラグインがインストールされている場合にのみ機能します。インストールするには、ターミナルを使用して、プロジェクトの www フォルダーを参照し、次のように入力します。

phonegap plugin add org.apache.cordova.inappbrowser

また

cordova plugin add org.apache.cordova.inappbrowser

次に、リンクがブラウザで開きます。

于 2014-03-04T11:26:47.100 に答える
2

Cordova 5.0 以降では、プラグイン InAppBrowser は Cordova プラグイン レジストリで名前が変更されているため、次を使用してインストールする必要があります。

cordova plugin add cordova-plugin-inappbrowser --save

次に使用します

<a href="#" onclick="window.open('http://www.kidzout.com', '_system');">www.kidzout.com</a>

于 2016-02-17T11:55:45.657 に答える
1

また、ブラウザでリンクが開かないという問題にも直面しました。これは、手順を含む私の修正です。

1: この cordova プラグインをインストールします。

cordova plugin add cordova-plugin-inappbrowser

2: 次のように html に開くリンクを追加します。

<a href="#" onclick="window.open('https://www.google.com/', '_system', 'location=yes');" >Google</a>

3: これは、多くの問題に直面したため、最も重要なステップです:cordova.jsファイルをダウンロードして、フォルダーに貼り付けwwwます。次に、index.htmlファイル内でこれを参照します。

<script src="cordova.js"></script>

このソリューションは、Android と iPhone の両方の環境で機能します。

于 2016-09-01T05:35:26.103 に答える