Где возможно, я предпочитаю вызывать функцию, а не отправлять событие. Это хорошо работает, если у вас есть контроль над кодом, который вы хотите запустить, но смотрите ниже случаи, когда вы не являетесь владельцем кода.
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);
}
источник
trigger
фактически не запускает собственное событие «изменения размера». Он только запускает прослушиватели событий, которые были добавлены с использованием jQuery. В моем случае сторонняя библиотека напрямую слушала нативное событие «resize», и это решение мне помогло.window.fireEvent
)С помощью jQuery вы можете попробовать вызвать триггер :
источник
window.dispatchEvent(new Event('resize'));
сделалоЧистый JS, который также работает на IE (из комментария @Manfred )
Или для угловых:
источник
Do not use this method anymore as it is deprecated.
The CreateEvent документы говорят «Многие методы , используемые с CreateEvent, такие как initCustomEvent, являются устаревшими. Используйте конструкторы событий вместо этого.» Эта страница выглядит многообещающе для событий пользовательского интерфейса.new Event()
метод. Я думаю, что взломать старые браузеры вы могли бы сделать что-то вродеif (Event.prototype.initEvent) { /* deprecated method */ } else { /* current method */ }
. Где текущий метод является ответом avetisk .Объединение ответов pomber и avetisk для всех браузеров без предупреждения:
источник
Я не смог заставить это работать с любым из вышеперечисленных решений. Как только я связал событие с jQuery, оно работало нормально, как показано ниже:
источник
просто
это то, что я использую ... если я не понимаю, что вы просите.
источник
Ответ с RxJS
Скажи что-нибудь в Angular
Если требуется ручная подписка (или не угловая)
Так как мой начальный startWith Value может быть неправильным (отправка для исправления)
В скажем Angular (я мог ..)
источник
Я считаю, что это должно работать для всех браузеров:
источник
Вы можете сделать это с этой библиотекой. https://github.com/itmor/events-js
источник
window.resizeBy()
вызовет событие onresize окна. Это работает как в Javascript, так и в VBScript .window.resizeBy(xDelta, yDelta)
называется какwindow.resizeBy(-200, -200)
уменьшить страницу 200px на 200px.источник