Wenn möglich, rufe ich die Funktion lieber auf, als ein Ereignis auszulösen. Dies funktioniert gut, wenn Sie die Kontrolle über den Code haben, den Sie ausführen möchten. Im Folgenden finden Sie jedoch Fälle, in denen Sie den Code nicht besitzen.
window.onresize = doALoadOfStuff;
function doALoadOfStuff() {
//do a load of stuff
}
In diesem Beispiel können Sie die doALoadOfStuff
Funktion aufrufen , ohne ein Ereignis auszulösen.
In Ihren modernen Browsern können Sie das Ereignis auslösen, indem Sie:
window.dispatchEvent(new Event('resize'));
Dies funktioniert nicht in Internet Explorer, wo Sie die Langschrift ausführen müssen:
var resizeEvent = window.document.createEvent('UIEvents');
resizeEvent.initUIEvent('resize', true, false, window, 0);
window.dispatchEvent(resizeEvent);
jQuery hat die trigger
Methode , die folgendermaßen funktioniert:
$(window).trigger('resize');
Und hat die Einschränkung:
Obwohl .trigger () eine Ereignisaktivierung mit einem synthetisierten Ereignisobjekt simuliert, wird ein natürlich vorkommendes Ereignis nicht perfekt repliziert.
Sie können auch Ereignisse für ein bestimmtes Element simulieren ...
function simulateClick(id) {
var event = new MouseEvent('click', {
'view': window,
'bubbles': true,
'cancelable': true
});
var elem = document.getElementById(id);
return elem.dispatchEvent(event);
}
quelle
trigger
löst das native "Resize" -Ereignis nicht aus. Es werden nur Ereignis-Listener ausgelöst, die mit jQuery hinzugefügt wurden. In meinem Fall hat eine Bibliothek eines Drittanbieters das native "Größenänderungs" -Ereignis direkt abgehört, und dies ist die Lösung, die für mich funktioniert hat.window.fireEvent
)Mit jQuery können Sie versuchen, den Trigger aufzurufen :
quelle
window.dispatchEvent(new Event('resize'));
funktioniertEin reines JS, das auch im IE funktioniert (aus @Manfred Kommentar )
Oder für eckige:
quelle
Do not use this method anymore as it is deprecated.
die create docs sagen „mit create verwendet viele Verfahren, wie initCustomEvent, sind veraltet. Verwenden Sie Ereignis Bauer statt.“ Diese Seite sieht für UI-Ereignisse vielversprechend aus.new Event()
Methode nicht. Ich denke, als Hack gegen ältere Browser könnte man so etwas tunif (Event.prototype.initEvent) { /* deprecated method */ } else { /* current method */ }
. Wo die aktuelle Methode die Antwort des Avetisk ist .Kombinieren Sie die Antworten von Pomber und Avetisk, um alle Browser abzudecken und keine Warnungen auszulösen:
quelle
Ich war nicht in der Lage, dies mit einer der oben genannten Lösungen zum Laufen zu bringen. Sobald ich das Ereignis mit jQuery verbunden habe, hat es wie folgt funktioniert:
quelle
gerade
ist das, was ich benutze ... es sei denn, ich verstehe falsch, wonach Sie fragen.
quelle
Antwort mit RxJS
Sagen Sie wie etwas in Angular
Wenn ein manuelles Abonnement gewünscht wird (oder nicht eckig)
Da mein anfänglicher Start mit Wert möglicherweise falsch ist (Versand zur Korrektur)
In sagen Angular (ich könnte ..)
quelle
Ich glaube, das sollte für alle Browser funktionieren:
quelle
Sie können dies mit dieser Bibliothek tun. https://github.com/itmor/events-js
quelle
window.resizeBy()
löst das Onresize-Ereignis des Fensters aus. Dies funktioniert sowohl in Javascript als auch in VBScript .window.resizeBy(xDelta, yDelta)
aufgerufen wiewindow.resizeBy(-200, -200)
Seite 200px um 200px verkleinern.quelle