Was ist die richtige (moderne) Methode zum Tippen auf das Fenstergrößenänderungsereignis, das in Firefox, WebKit und Internet Explorer funktioniert ?
Und können Sie beide Bildlaufleisten ein- und ausschalten?
javascript
jquery
cross-browser
resize
BuddyJoe
quelle
quelle
window.dispatchEvent(new Event('resize'));
stackoverflow.com/questions/1818474/…Antworten:
jQuery verfügt über eine integrierte Methode :
Aus Gründen der UI Ansprechbarkeit, könnte man erwägen , einen SetTimeout mit Ihrem Code aufrufen erst nach einer bestimmten Anzahl von Millisekunden, wie im folgenden Beispiel gezeigt, inspiriert durch diese :
quelle
$('.button').on({ click: function(){ /* your code */ $(window).trigger('resize') })
quelle
Hier ist die Nicht-jQuery-Methode zum Abrufen des Größenänderungsereignisses:
Es funktioniert auf allen modernen Browsern. Es tut nicht Drossel etwas für Sie. Hier ist ein Beispiel dafür in Aktion.
quelle
Es tut mir leid, einen alten Thread aufzurufen, aber wenn jemand jQuery nicht verwenden möchte, können Sie Folgendes verwenden:
quelle
Da Sie für jQuery offen sind, scheint dieses Plugin den Trick zu tun.
quelle
Mit jQuery 1.9.1 habe ich gerade herausgefunden, dass dies, obwohl technisch identisch) *, in IE10 (aber in Firefox) nicht funktioniert hat:
während dies in beiden Browsern funktionierte:
Edit :)
* Eigentlich technisch nicht identisch, wie in den Kommentaren von WraithKenny und Henry Blyth vermerkt und erklärt .
quelle
.resize()
zu.bind('resize')
oder Hinzufügen der anonymen Funktion? Ich denke, es ist die zweite.)adjustSize
verliert seine Methode Rahmenthis
, während der zweite AnrufCmsContent.adjustSize()
Konfitürenthis
, dhthis === CmsContent
. Wenn dieCmsContent
Instanz in deradjustSize
Methode erforderlich ist , schlägt der erste Fall fehl. Der zweite Fall funktioniert für jede Art von Funktionsaufruf. Es wird daher empfohlen, immer eine anonyme Funktion zu übergeben.jQuery
bietet$(window).resize()
standardmäßig folgende Funktionen:quelle
Ich halte das jQuery-Plugin "jQuery resize event" für die beste Lösung, da es dafür sorgt, dass das Ereignis so gedrosselt wird, dass es in allen Browsern gleich funktioniert. Es ähnelt der Antwort von Andrews, ist jedoch besser, da Sie das Größenänderungsereignis an bestimmte Elemente / Selektoren sowie an das gesamte Fenster binden können. Es eröffnet neue Möglichkeiten, sauberen Code zu schreiben.
Das Plugin finden Sie hier
Es gibt Leistungsprobleme, wenn Sie viele Listener hinzufügen, aber für die meisten Anwendungsfälle ist es perfekt.
quelle
Ich denke, Sie sollten dies weiter kontrollieren:
quelle
hoffe, es wird in jQuery helfen
Definieren Sie zuerst eine Funktion. Wenn eine Funktion vorhanden ist, fahren Sie mit dem nächsten Schritt fort.
Browser Größe ändern Verwendung wie diese.
quelle
Neben den erwähnten Fenstergrößenänderungsfunktionen ist es wichtig zu verstehen, dass die Größenänderungsereignisse häufig ausgelöst werden, wenn sie verwendet werden, ohne dass die Ereignisse entkoppelt werden.
Paul Irish hat eine hervorragende Funktion, die die Größenänderung stark beeinträchtigt. Sehr zu empfehlen. Funktioniert browserübergreifend. Habe es neulich in IE8 getestet und alles war in Ordnung.
http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/
Schauen Sie sich unbedingt die Demo an an, um den Unterschied zu sehen.
Hier ist die Funktion der Vollständigkeit halber.
quelle