【问题标题】:.onbeforeunload sometimes returns, sometimes doesn't (popup,IE11).onbeforeunload 有时返回,有时不返回(弹出窗口,IE11)
【发布时间】:2018-05-09 08:06:55
【问题描述】:

我正在工作中编写此代码。基本上,只要弹出窗口关闭,它就会返回一个console.log。使用.onbeforeunload 适用于除 IE11 之外的所有浏览器。使用 IE11 有时它会工作,有时它根本不会调用。我没有做任何不同的事情,只是打开弹出窗口然后关闭它。我不知道如何解决这个问题,因为它是喜怒无常的。我已经粘贴了下面的功能代码。谢谢

function open(config, refID, cb) {
    var w = window.open(
      config.baseURL,
      "_blank",
      "toolbar,scrollbars,resizable,top=250,left=250,width=599,height=500"
    );

    w.onbeforeunload = function () {
      if (cb) cb()
    };
  }

【问题讨论】:

    标签: javascript internet-explorer-11 onbeforeunload


    【解决方案1】:

    我真的不知道你是如何让你的代码工作的。它根本不会。问题是您无法像尝试那样添加事件。您需要使用addEventListener。我做了一个简单的sn-p。工作 100% 次。没有气质代码,如果这样的事情甚至存在的话:)

    function open(url, callback) {
    
      // Open the window
      var win = window.open(url, "popup", "toolbar=1, scrollbars=1, resizable=1, top=250, left=250, width=500, height=500");
    
      // Add the event listener
      win.addEventListener('beforeunload', function () {
        if(callback) callback();
      }, false);
    
    }
    
    // Opens the window, with the url and callback as arguments
    open('whatever.html', function() { 
      console.log('hello!');
    });
    

    请记住,您需要对打开的窗口 url 的权限才能向其中添加事件侦听器。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2011-01-22
      • 1970-01-01
      • 2016-04-11
      • 1970-01-01
      • 2010-10-06
      • 2011-05-21
      • 2023-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多