簡體   English   中英

使用 PhoneGap/Cordova InAppBrowser 定時彈出?

[英]Timed popup with PhoneGap/Cordova InAppBrowser?

我正在使用 PhoneGap (Apache Cordova) 和 InAppBrowser 插件 (cordova-plugin-inappbrowser)。 為了顯示一個彈出窗口,我使用了以下函數:

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>
...

任何評論表示贊賞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM