2

コードバ 2.6 と jqm 1.3 でビルドされた iOS/Android アプリがあります。ユーザーがボタンをクリックした後、外部 Web サイトへのリンクを開く必要があります。私が使用しているコードは次のとおりです。

var ref = window.open('http://google.com','_self','location=yes');
ref.addEventListener('loadstart',function(event) {
    console.log('load started');
});
ref.addEventListener('loadstop',function(event) {    
    console.log('load stopped');
});
ref.addEventListener('loaderror',function(event) {
    console.log('load error = ' + JSON.stringify(event));
});

iOS では、すべてが期待どおりに動作します。新しいブラウザ ウィンドウが開き、Google の Web サイトが読み込まれます。しかし、Androidにロードするものは何もありません。ボタンをクリックしても何も起こりません。window.open の前後にコンソール ステートメントを挿入したので、少なくともコードが実行されていることがわかります。

私の config.xml は、ホワイトリストに登録されたサイトに対して広く開かれている必要があります。

<access origin=".*"/>;

Nexus 7(android 4.2)とandroid 2.2エミュレーターでテストしましたが、両方で同じ結果が得られました。

Androidでwindow.openが正しく起動しない理由を知っている人はいますか?

4

2 に答える 2

1

Android でプラグインをロードする 2.6 に問題があるように見えました。2.7にアップグレードすると、すべてが機能し始めました。

于 2013-05-03T15:51:14.690 に答える
0

おそらく、ChildBrowser プラグインを使用するのが解決策でしょうか? これにより、iOS と Android 間のプラットフォームの互換性を維持しながら、操作自体をより細かく制御できます。

ほとんどの場合、次のスニペットのようなものを使用して、childbrowser を使用して外部ページを表示します。

function openBrowser(url) {

    // determine if the childbrowser plugin is available
    var useChildBrowser = ('plugins' in window && window.plugins.childBrowser);

    if (useChildBrowser) {
        popup = window.plugins.childBrowser;
        popup.showWebPage(url, { showLocationBar: false, showAddress: false });
    } else {
        popup = window.open(url, 'Share', "['width=600px', 'height=400px', 'resizable=0', 'fullscreen=yes']"); 
    }
}

window.openChildBrowser プラグインが利用できない場合、これは usingにフォールバックすることに注意してください。おそらく試してみる価値はありますか?

于 2013-05-02T19:13:17.767 に答える