我已经在窗口大小调整上注册了一个触发器。我想知道如何触发要调用的事件。例如,当隐藏一个div时,我希望调用触发器函数。
我发现window.resizeTo()可以触发该函数,但是否有其他解决方案?
我已经在窗口大小调整上注册了一个触发器。我想知道如何触发要调用的事件。例如,当隐藏一个div时,我希望调用触发器函数。
我发现window.resizeTo()可以触发该函数,但是否有其他解决方案?
当前回答
在可能的情况下,我倾向于调用函数而不是分派事件。如果您可以控制想要运行的代码,那么这种方法效果很好,但如果您不拥有代码,请参阅下面的情况。
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
在本例中,您可以调用doALoadOfStuff函数,而无需分派事件。
在你的现代浏览器,你可以触发事件使用:
window.dispatchEvent(new Event('resize'));
这在ie浏览器中是行不通的,在ie浏览器中,你必须进行手动操作:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery有触发器方法,它是这样工作的:
$(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);
}
其他回答
我相信这应该适用于所有浏览器:
var event;
if (typeof (Event) === 'function') {
event = new Event('resize');
} else { /*IE*/
event = document.createEvent('Event');
event.initEvent('resize', true, true);
}
window.dispatchEvent(event);
在可能的情况下,我倾向于调用函数而不是分派事件。如果您可以控制想要运行的代码,那么这种方法效果很好,但如果您不拥有代码,请参阅下面的情况。
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
在本例中,您可以调用doALoadOfStuff函数,而无需分派事件。
在你的现代浏览器,你可以触发事件使用:
window.dispatchEvent(new Event('resize'));
这在ie浏览器中是行不通的,在ie浏览器中,你必须进行手动操作:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery有触发器方法,它是这样工作的:
$(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);
}
使用jQuery,你可以尝试调用触发器:
$(window).trigger('resize');
window.dispatchEvent(new Event('resize'));
just
$(window).resize();
是我用的…除非我误解了你的要求