1

私のアプリでは、Cordova の InAppBrowser を使用して外部ページを開きます。ポーリング イベントを添付して、localStorage エントリを探します。エントリが「表示」されると、InAppBrowser は閉じる必要がありますが、それは起こっていません。

ちなみに、これはすべてIntel XDKにあります。

何が起こるか (以下のコードを参照) は、Game1.html (外部ページ) が読み込まれて表示されることです。「送信」機能を起動するボタンをクリックすると、「完了!」が表示されます。Game.html ページからのアラートですが、イベント リスナーからの "Caught" アラートが表示されません。

更新: リモート ページが読み込まれて表示されると、左上隅に「戻る」アイコンがあることに気付きました。Cordova InAppBrowser でこれを期待していませんでした。ただし、device.showRemoteSiteExt (インテル ブリッジ API) のドキュメントでは、このアイコンについて説明しています。window.show が device.showRemoteSiteExt でオーバーライドされている可能性はありますか?

このメソッドを使用する主な理由は、Game1.html が localCache に格納されるデータを生成できるようにするためです。次に、ポーリング プロセスがそのデータを取得し、サーバーに中継します。

index.html の関数:

function showGamesPage() {
    var win = window.open("http://localhost:53841/Game1.html", "_blank", "EnableViewPortScale=yes");
        win.addEventListener("loadstop", function() {
            win.executeScript({ code: "localStorage.setItem('name', '' );" });
            var loop = setInterval(function() {
                win.executeScript({ code: "localStorage.getItem( 'name' );"},
                    function(values) {
                        var name = values[0];
                        if (name) {
                            clearInterval(loop);
                            alert("Caught!");
                            win.close();
                        }
                    }
                );
            });
        });
    }

そして、ボタンをクリックしたときに Game1.html で起動する関数は次のとおりです。

function submit() {
    localStorage.setItem("name", "john");
    alert("Done!");
}

これがなぜなのか知っている人はいますか?これは XDK の単なる穴ですか?

前もって感謝します。

4

1 に答える 1