如何触发 window.onresize 事件?

发布于 2024-12-07 17:24:58 字数 266 浏览 0 评论 0原文

我试图以编程方式触发窗口上的调整大小事件:

var evt = document.createEvent('HTMLEvents');
evt.initEvent('resize', true, false);
window.dispatchEvent(evt);

不幸的是,这不起作用。我正在尝试让 ExtJS 库进行重新计算,它使用 DOM Level 3 事件,所以我不能只调用 window.onresize();

I am trying to fire the resize event on window programmatically:

var evt = document.createEvent('HTMLEvents');
evt.initEvent('resize', true, false);
window.dispatchEvent(evt);

That unfortunately does not work. I am trying to make ExtJS library to do recalculations, and it uses DOM Level 3 events so I cannot just call window.onresize();.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

奢华的一滴泪 2024-12-14 17:24:58

您正在创建错误的事件。

调整大小是一个 UIEvent,在此处阅读规范

您需要执行的操作这个:

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

在这里查看它的实际情况:http://jsfiddle.net/9hsBA/

You are creating the wrong event.

Resize is a UIEvent, read the specs here

You need to do this:

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

See it in action here: http://jsfiddle.net/9hsBA/

你是年少的欢喜 2024-12-14 17:24:58

如果 createEvent 可能弃用,转而使用CustomEvent,这是使用 CustomEvent API 的类似代码片段:

var ev = new CustomEvent('resize'); //instantiate the resize event
ev.initEvent('resize');

window.dispatchEvent(ev); // fire 'resize' event!

In case createEvent might get deprecated in favor of CustomEvent, here's a similar snippet using the CustomEvent API:

var ev = new CustomEvent('resize'); //instantiate the resize event
ev.initEvent('resize');

window.dispatchEvent(ev); // fire 'resize' event!
冷︶言冷语的世界 2024-12-14 17:24:58

以防万一其他人需要这个,在 Extjs 4.1 中你可以做一些典型的不优雅的事情......

    Ext.ComponentQuery.query('viewport')[0].doLayout();

在视口上不需要 id - .query('viewport') 部分使用视口的别名配置。

Just in case anyone else needs this, in Extjs 4.1 you can do something typically inelegant...

    Ext.ComponentQuery.query('viewport')[0].doLayout();

No need for an id on the viewport - the .query('viewport') part is using the viewport's alias config.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文