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

时间:2016-04-21 10:36:50

标签: javascript angularjs scroll cross-browser iscroll

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

我通过在承诺加载后更改IScroll' s maxScrollXscrollerWidth来修复此问题,但我也使用了一直不会滚动的指标。

我尝试使用window.dispatchEvent(new Event('resize'));修复此问题以强制调整窗口大小。我的问题是这在Chrome中运行良好,但在Firefox,Safari和IE中完全打破了滚动。是否有其他方法可以强制调整与所有浏览器兼容的窗口大小?

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

  • Safari 5.1.4(734.54.16)
  • Firefox 45.0.2
  • Edge 25.10586.0.0

1 个答案:

答案 0 :(得分:1)

我终于找到了答案:

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