使用 PhoneGap/Cordova InAppBrowser 定时弹出?
Timed popup with PhoneGap/Cordova InAppBrowser?
我将 PhoneGap (Apache Cordova) 与 InAppBrowser 插件 (cordova-plugin-inappbrowser) 一起使用。为了显示弹出窗口 window,我使用了以下函数:
function popup(url) {
var win = cordova.InAppBrowser.open(url, "_blank", "location=no");
win.addEventListener("loadstop", function() {
var loop = window.setInterval(function() {
win.executeScript(
{code: "window.shouldClose"},
function(values) {
if(values[0]) {
win.close();
window.clearInterval(loop);
}
}
);
}, 200);
});
}
我真正需要的是一个函数,它的规范是:
function Popup(url, maxTimeToWaitIfResponseIsSlow)
有什么实现方法吗?
经过一些研究和测试,我找到了答案。这是修改后的函数,在客户端有 "double defense":
function popup(url) {
var elapsed = 0;
var loadstopFired = false;
var win = cordova.InAppBrowser.open(url, "_blank", "location=no");
setTimeout(function() {if (!loadstopFired) win.close();}, 2000);
win.addEventListener("loadstop", function() {
loadstopFired = true;
var loop = window.setInterval(function() {
elapsed += 200;
win.executeScript(
{code: "window.popupStatus"},
function(values) {
if (values[0]=="closed") { win.close(); window.clearInterval(loop); }
else if ((values[0]!="loaded") && (elapsed>2000)) { win.close(); window.clearInterval(loop); }
}
);
}, 200);
});
}
虽然服务器端(url 调用)看起来像:
...
<body onload="window.popupStatus='loaded';">
...
<img src="close.png" onclick="window.popupStatus='closed';" />
...
</body>
...
欢迎任何评论。
我将 PhoneGap (Apache Cordova) 与 InAppBrowser 插件 (cordova-plugin-inappbrowser) 一起使用。为了显示弹出窗口 window,我使用了以下函数:
function popup(url) {
var win = cordova.InAppBrowser.open(url, "_blank", "location=no");
win.addEventListener("loadstop", function() {
var loop = window.setInterval(function() {
win.executeScript(
{code: "window.shouldClose"},
function(values) {
if(values[0]) {
win.close();
window.clearInterval(loop);
}
}
);
}, 200);
});
}
我真正需要的是一个函数,它的规范是:
function Popup(url, maxTimeToWaitIfResponseIsSlow)
有什么实现方法吗?
经过一些研究和测试,我找到了答案。这是修改后的函数,在客户端有 "double defense":
function popup(url) {
var elapsed = 0;
var loadstopFired = false;
var win = cordova.InAppBrowser.open(url, "_blank", "location=no");
setTimeout(function() {if (!loadstopFired) win.close();}, 2000);
win.addEventListener("loadstop", function() {
loadstopFired = true;
var loop = window.setInterval(function() {
elapsed += 200;
win.executeScript(
{code: "window.popupStatus"},
function(values) {
if (values[0]=="closed") { win.close(); window.clearInterval(loop); }
else if ((values[0]!="loaded") && (elapsed>2000)) { win.close(); window.clearInterval(loop); }
}
);
}, 200);
});
}
虽然服务器端(url 调用)看起来像:
...
<body onload="window.popupStatus='loaded';">
...
<img src="close.png" onclick="window.popupStatus='closed';" />
...
</body>
...
欢迎任何评论。