一尘不染

如何在JavaScript中触发窗口调整大小事件?

javascript

我已经在窗口调整大小上注册了一个触发器。我想知道如何触发事件被调用。例如,当隐藏一个div时,我希望调用触发函数。

我发现window.resizeTo()可以触发该功能,但是还有其他解决方案吗?


阅读 465

收藏
2020-05-01

共1个答案

一尘不染

在可能的情况下,我更喜欢调用函数而不是调度事件。如果您可以控制要运行的代码,则此方法效果很好,但是如果您不拥有该代码,请参见下文。

window.onresize = doALoadOfStuff;

function doALoadOfStuff() {
    //do a load of stuff
}

在此示例中,您可以在doALoadOfStuff不调度事件的情况下调用该函数。

在现代浏览器中,您可以使用以下方法触发事件:

window.dispatchEvent(new Event('resize'));

在Internet Explorer中,这是行不通的,您必须进行长期操作:

var resizeEvent = window.document.createEvent('UIEvents'); 
resizeEvent.initUIEvent('resize', true, false, window, 0); 
window.dispatchEvent(resizeEvent);

jQuery具有triggermethod,其工作方式如下:

$(window).trigger('resize');

并警告:

尽管.trigger()模拟了一个事件激活,并完成了一个综合事件对象,但它不能完美地复制自然发生的事件。

您还可以模拟特定元素上的事件…

function simulateClick(id) {
  var event = new MouseEvent('click', {
    'view': window,
    'bubbles': true,
    'cancelable': true
  });

  var elem = document.getElementById(id);

  return elem.dispatchEvent(event);
}
2020-05-01