我试图以编程方式触发窗口上的resize事件:
var evt = document.createEvent('HTMLEvents');
evt.initEvent('resize', true, false);
window.dispatchEvent(evt);
遗憾的是,这不起作用。我正在尝试让ExtJS库进行重新计算,它使用DOM Level 3事件,所以我不能只调用window.onresize();
。
答案 0 :(得分:25)
您正在创建错误的事件。
调整大小是一个UIEvent,read the specs here
你需要这样做:
var evt = document.createEvent('UIEvents');
evt.initUIEvent('resize', true, false,window,0);
window.dispatchEvent(evt);
在此处查看此行动:http://jsfiddle.net/9hsBA/
答案 1 :(得分:3)
万一其他人需要这个,在Extjs 4.1中你可以做一些通常不优雅的事情......
Ext.ComponentQuery.query('viewport')[0].doLayout();
视口不需要id - .query('viewport')部分正在使用视口的别名配置。
答案 2 :(得分:2)
如果createEvent可能会deprecated支持CustomEvent,那么使用CustomEvent API会有类似的代码段:
var ev = new CustomEvent('resize'); //instantiate the resize event
ev.initEvent('resize');
window.dispatchEvent(ev); // fire 'resize' event!