私のアプリでは、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 の単なる穴ですか?
前もって感謝します。