Javascript 是否在应用浏览器中使用PhoneGap/Cordova定时弹出?

Javascript 是否在应用浏览器中使用PhoneGap/Cordova定时弹出?,javascript,cordova,popup,phonegap,inappbrowser,Javascript,Cordova,Popup,Phonegap,Inappbrowser,我正在使用PhoneGap(Apache Cordova)和InApp浏览器插件(Cordova插件InApp浏览器)。为了显示弹出窗口,我使用以下功能: function popup(url) { var win = cordova.InAppBrowser.open(url, "_blank", "location=no"); win.addEventListener("loadstop", function() { var loop = window.setInterval

我正在使用PhoneGap(Apache Cordova)和InApp浏览器插件(Cordova插件InApp浏览器)。为了显示弹出窗口,我使用以下功能:

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)

有什么办法可以做到这一点吗?

因此,经过一些研究和测试,我找到了答案。这是修改后的函数,客户端有“双重防御”:

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>
...
。。。
...
...
...
任何评论都将不胜感激