Dans la mesure du possible, je préfère appeler la fonction plutôt que d'envoyer un événement. Cela fonctionne bien si vous avez le contrôle sur le code que vous souhaitez exécuter, mais voyez ci-dessous les cas où vous ne possédez pas le code.
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
Dans cet exemple, vous pouvez appeler la doALoadOfStuff
fonction sans envoyer d'événement.
Dans vos navigateurs modernes, vous pouvez déclencher l'événement en utilisant:
window.dispatchEvent(new Event('resize'));
Cela ne fonctionne pas dans Internet Explorer, où vous devrez faire le long terme:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery a la trigger
méthode , qui fonctionne comme ceci:
$(window).trigger('resize');
Et a la mise en garde:
Bien que .trigger () simule une activation d'événement, avec un objet d'événement synthétisé, il ne reproduit pas parfaitement un événement naturel.
Vous pouvez également simuler des événements sur un élément spécifique ...
function simulateClick(id) {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var elem = document.getElementById(id);
return elem.dispatchEvent(event);
}
la source
trigger
ne déclenche pas réellement l'événement natif de «redimensionnement». Il déclenche uniquement les écouteurs d'événements qui ont été ajoutés à l'aide de jQuery. Dans mon cas, une bibliothèque tierce écoutait directement l'événement natif "resize" et c'est la solution qui a fonctionné pour moi.window.fireEvent
)Avec jQuery, vous pouvez essayer d'appeler trigger :
la source
window.dispatchEvent(new Event('resize'));
faitUn JS pur qui fonctionne également sur IE (d' après le commentaire @Manfred )
Ou pour angulaire:
la source
Do not use this method anymore as it is deprecated.
Les createEvent docs disent « De nombreuses méthodes utilisées avec createEvent, comme initCustomEvent, sont dépréciées. Utilisez les constructeurs d'événements à la place. » Cette page semble prometteuse pour les événements de l'interface utilisateur.new Event()
méthode. Je pense qu'en tant que hack contre les navigateurs plus anciens, vous pourriez faire quelque chose commeif (Event.prototype.initEvent) { /* deprecated method */ } else { /* current method */ }
. Où la méthode actuelle est la réponse de l' avetisk .Combiner les réponses de pomber et d'avetisk pour couvrir tous les navigateurs et ne pas provoquer d'avertissements:
la source
Je n'ai pas réussi à faire fonctionner cela avec l'une des solutions ci-dessus. Une fois que j'ai lié l'événement avec jQuery, cela a bien fonctionné comme ci-dessous:
la source
juste
est ce que j'utilise ... à moins que je ne comprenne mal ce que vous demandez.
la source
Réponse avec RxJS
Dites comme quelque chose en angulaire
Si vous souhaitez un abonnement manuel (ou pas angulaire)
Puisque mon début initial avec une valeur peut être incorrecte (envoi pour correction)
Dire angulaire (je pourrais ..)
la source
Je pense que cela devrait fonctionner pour tous les navigateurs:
la source
Vous pouvez le faire avec cette bibliothèque. https://github.com/itmor/events-js
la source
window.resizeBy()
déclenchera l'événement onresize de la fenêtre. Cela fonctionne à la fois en Javascript ou en VBScript .window.resizeBy(xDelta, yDelta)
appelé commewindow.resizeBy(-200, -200)
pour réduire la page 200px par 200px.la source