window.dispatchEvent 不适用于 Firefox、Safari 或 IE

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

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

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

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

我试过以下浏览器都不行:

我终于自己找到了答案:

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