Siempre que sea posible, prefiero llamar a la función en lugar de enviar un evento. Esto funciona bien si tiene control sobre el código que desea ejecutar, pero vea a continuación los casos en los que no posee el código.
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
En este ejemplo, puede llamar a la doALoadOfStuff
función sin enviar un evento.
En sus navegadores modernos, puede activar el evento usando:
window.dispatchEvent(new Event('resize'));
Esto no funciona en Internet Explorer, donde tendrá que hacer la mano dura:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery tiene el trigger
método , que funciona así:
$(window).trigger('resize');
Y tiene la advertencia:
Aunque .trigger () simula una activación de evento, completa con un objeto de evento sintetizado, no replica perfectamente un evento natural.
También puede simular eventos en un elemento específico ...
function simulateClick(id) {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var elem = document.getElementById(id);
return elem.dispatchEvent(event);
}
fuente
trigger
realidad no activa el evento nativo de "cambio de tamaño". Solo activa oyentes de eventos que se han agregado usando jQuery. En mi caso, una biblioteca de terceros estaba escuchando directamente el evento de "cambio de tamaño" nativo y esta es la solución que funcionó para mí.window.fireEvent
)Con jQuery, puede intentar llamar al activador :
fuente
window.dispatchEvent(new Event('resize'));
hiceUn JS puro que también funciona en IE (del comentario de @Manfred )
O para angular:
fuente
Do not use this method anymore as it is deprecated.
Los documentos CreateEvent dicen "Muchos métodos utilizados con createEvent, como initCustomEvent, ya no son aprobadas. Use constructores de eventos en su lugar." Esta página parece prometedora para eventos de IU.new Event()
método. Creo que como un truco contra navegadores más antiguos podría hacer algo asíif (Event.prototype.initEvent) { /* deprecated method */ } else { /* current method */ }
. Donde el método actual es la respuesta del avetisk .Combinando las respuestas de pomber y avetisk para cubrir todos los navegadores y sin causar advertencias:
fuente
En realidad no pude hacer que esto funcionara con ninguna de las soluciones anteriores. Una vez que vinculé el evento con jQuery, funcionó bien de la siguiente manera:
fuente
sólo
es lo que uso ... a menos que no entienda mal lo que está pidiendo.
fuente
Respuesta con RxJS
Di como algo en angular
Si desea una suscripción manual (o no angular)
Dado que mi valor inicial startWith podría ser incorrecto (envío para corrección)
En decir Angular (podría ...)
fuente
Creo que esto debería funcionar para todos los navegadores:
fuente
Puedes hacer esto con esta biblioteca. https://github.com/itmor/events-js
fuente
window.resizeBy()
activará el evento onresize de la ventana. Esto funciona tanto en Javascript como en VBScript .window.resizeBy(xDelta, yDelta)
llamado comowindow.resizeBy(-200, -200)
para reducir la página 200 px por 200 px.fuente