在我的应用程序中,我使用 Cordova 的 InAppBrowser 打开外部页面。我附加了一个轮询事件来查找 localStorage 条目。当条目被“看到”时,InAppBrowser 应该关闭,但这并没有发生。
顺便说一下,这一切都在英特尔 XDK 中。
发生的事情(参考下面的代码)是 Game1.html(外部页面)确实加载并出现了。当我单击触发“提交”功能的按钮时,我确实看到了“完成!” 来自 Game.html 页面的警报,但我没有看到来自事件侦听器的“捕获”警报。
更新:我注意到当远程页面被加载并显示时,左上角有一个“后退”图标。我没想到 Cordova InAppBrowser 会出现这种情况。但是,在 device.showRemoteSiteExt (intel bridge 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 中的一个漏洞吗?
提前致谢。