【问题标题】:Timed popup with PhoneGap/Cordova InAppBrowser?PhoneGap/Cordova InAppBrowser 的定时弹出窗口?
【发布时间】:2019-11-23 15:28:00
【问题描述】:

我正在使用带有 InAppBrowser 插件 (cordova-plugin-inappbrowser) 的 PhoneGap (Apache Cordova)。为了显示一个弹出窗口,我使用了以下函数:

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)

任何想法如何实现这一目标?

【问题讨论】:

    标签: javascript cordova popup phonegap inappbrowser


    【解决方案1】:

    所以经过一些研究和测试,我找到了答案。这是修改后的功能,在客户端有“双重防御”:

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

    感谢任何评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-30
      • 2013-03-20
      • 2014-12-15
      • 2023-03-23
      • 1970-01-01
      • 2018-03-04
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多