window.dispatchEvent 在 Firefox、Safari 或 IE 中不起作用

window.dispatchEvent doesn't work in Firefox, Safari or IE

本文关键字:IE 不起作用 Safari dispatchEvent Firefox window      更新时间:2023-09-26

我需要强制调整浏览器窗口的大小,因为一个承诺在一个非常宽的元素上破坏了IScroll(问题是如果承诺成功,我使用承诺来更改宽度)。IScroll 在承诺完成之前加载并从原始元素获取 with。结果是我只能滚动与原始元素宽度一样宽,而不能滚动 promise 加载的更宽元素的新宽度。如果我手动调整浏览器窗口的大小,则可以滚动完整大小。

我通过在加载承诺后更改 IScroll 的maxScrollXscrollerWidth来解决此问题,但我也使用了一个不会一直滚动的指示器。

我尝试使用window.dispatchEvent(new Event('resize'));来强制调整窗口大小来解决此问题。我的问题是这在Chrome中工作正常,但在Firefox,Safari和IE中完全破坏了滚动。有没有其他方法可以强制调整与所有浏览器兼容的窗口大小?

我尝试了以下浏览器,但不起作用:

  • 野生动物园 5.1.4 (734.54.16)
  • 火狐 45.0.2
  • 边缘 25.10586.0.0

我终于自己找到了答案:

$timeout(function() {
    var evt = $window.document.createEvent('UIEvents'); 
    evt.initUIEvent('resize', true, false, $window, 0); 
    $window.dispatchEvent(evt);
});