Где возможно, я предпочитаю вызывать функцию, а не отправлять событие. Это хорошо работает, если у вас есть контроль над кодом, который вы хотите запустить, но смотрите ниже случаи, когда вы не владеете кодом.
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 имеет метод trigger
, который работает следующим образом:
$(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);
}