Nếu có thể, tôi thích gọi hàm hơn là gửi một sự kiện. Điều này hoạt động tốt nếu bạn có quyền kiểm soát mã bạn muốn chạy, nhưng xem bên dưới để biết trường hợp bạn không sở hữu mã.
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
Trong ví dụ này, bạn có thể gọi doALoadOfStuff
hàm mà không cần gửi sự kiện.
Trong các trình duyệt hiện đại của bạn, bạn có thể kích hoạt sự kiện bằng cách sử dụng:
window.dispatchEvent(new Event('resize'));
Điều này không hoạt động trong Internet Explorer, nơi bạn sẽ phải thực hiện lâu dài:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery có trigger
phương thức , hoạt động như thế này:
$(window).trigger('resize');
Và có cảnh báo:
Mặc dù .trigger () mô phỏng kích hoạt sự kiện, hoàn thành với một đối tượng sự kiện được tổng hợp, nhưng nó không sao chép hoàn hảo một sự kiện xảy ra tự nhiên.
Bạn cũng có thể mô phỏng các sự kiện trên một yếu tố cụ thể ...
function simulateClick(id) {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var elem = document.getElementById(id);
return elem.dispatchEvent(event);
}