2

私はこれを理解することはできません。Android アプリの phonegap で子ブラウザーを開きました。

window.open( url, '_blank', 'location=yes' );

これは正しくありません。ブラウザーを開きますが、完了ボタンはブラウザーを閉じず、メイン アプリケーションに戻りません。

私が見つけた別の解決策を試しました:

InAppBrowser を使用した Phonegap の window.close と同等:

このコードは phonegap アプリです。

var ref = window.open(encodeURI(url), '_blank', options);
ref.addEventListener('loadstop', function(event) {        
    if (event.url.match("mobile/close")) {
        ref.close();
    }
});

このボタンは、以前に読み込んだ URL ページに作成されます。

<a href="/mobile/close">Close</a>

うまくいきません。何か助けはありますか?

アップデート:

  • 開く URL は「file://...」などです。
  • 「location=yes」を設定して「完了」ボタンを押すと、閉じようとしますが、再び表示されます。
4

1 に答える 1

1

これを機能させました。私のコードは似ていますが、loadstop の代わりに loadstart を使用して異なる方法で行ったことを以下に示します。イベントも削除しました。

function iabWindowOpen(url) {
    //May need to encodeURI on iOS so far working fine on android
    g_iabRef = window.open(url, "_blank", "location=yes,closebuttoncaption=Cancel");
    g_iabRef.addEventListener('loadstart', iabLoadStart);
    g_iabRef.addEventListener('loaderror', iabError);
    g_iabRef.addEventListener('exit', iabExit);
}


function iabLoadStart(event){
    var url = event.url;
    LOG ('iabLoadStart - ' + url);
    var iOut = url.indexOf("CloseIAB"); //or whatever you are looking for in your url
    if(iOut >= 0){
         g_iabRef.removeEventListener('loadstart', iabLoadStart);
         g_iabRef.removeEventListener('loaderror', iabError);
         g_iabRef.removeEventListener('exit', iabExit);
         g_iabRef.close();
         handleOpenURL(url); //do what you want when you get back
     }
}
于 2013-09-10T16:54:37.373 に答える