Ich bin heute Abend auf ein interessantes -Bug -Feature gestoßen, als ich einen Handler für window.onresize
in Chrome geschrieben habe (die neueste Version 6.0.472.55). Öffnen Sie zunächst zwei Registerkarten und öffnen Sie dann im ersten Tab dieses jsFiddle .
Ändern Sie die Größe des Fensters nach Belieben und das Dialogfeld funktioniert wie erwartet. Versuchen Sie jetzt, zum zweiten Tab -_- zu wechseln. Warum wird resize
ausgelöst, wenn die Registerkarte geändert wird? Könnte jemand Einblick / mehr Details geben, wenn ich einen Fehler einreichen muss?
Der Fehler wurde mit Google gemeldet. Vorläufig habe ich es ignoriert, da mein tatsächlicher onresize
- Handler keine Alarmboxen anzeigt.
Nun, wie wäre es damit? Klingt wie ein Fehler. Ich würde vermuten, dass onresize
durch eine Kombination von Verhaltensweisen gehört wird, wahrscheinlich neue Daten über die Seitengröße, die aus irgendeinem Grund bei der Ausrichtung eines Tabs eintreffen.
In der Version, die ich unter Windows 5.0.375.127 verwende, passiert das nicht, aber wenn ich die Größe des Fensters tatsächlich verändere, wird das Ereignis resize zweimal ausgelöst .
Wenn Sie wissen, dass es da ist, können Sie einen Schritt tun, um es zu besiegen (das Google für Sie tun sollte). Wickeln Sie eine if
-Anweisung um Ihren Handler, die nach einer tatsächlichen Änderung in clientHeight
oder clientWidth
sucht, wenn Sie nur dann etwas benötigen, wenn das Ereignis (wie wir es verstehen) tatsächlich auftritt.
Aus dem Fehlerbericht :
Wenn Sie Dev Tools in Splitview verwenden und zu einem Tab ohne Dev wechseln Werkzeuge in Split geöffnet, wird das Resize-Event ausgelöst.
Wenn also die nächste Registerkarte nicht dieselbe Fenstergröße hat, wird resize () verwendet gefeuert werden.
Wenn ich nicht weiß, wie Chrome Tab-Wechsel und Seitenrendering handhabt, ist meine Schätzung genauso gut (oder schlecht, je nachdem, wie man es betrachtet) als die des nächsten. Ich würde vermuten, dass das erneute Rendern der Seite oder das erneute Laden der bereits gerenderten Seite, wenn sie zwischengespeichert wird, das Ereignis onresize
auslöst. Dies geschieht, wenn die Registerkarte umgeschaltet wird. Wenn ich meiner Theorie folge, würde ich vermuten, dass Chrome das Größenanpassungsereignis bei der ersten Seitenanzeige nicht auslöst, weil es nicht dafür vorgesehen ist. Aber noch einmal, da ich nicht weiß, wie Chrome intern mit Tab-Wechseln umgeht, ist das nur Spekulation (Denkanstoß).
Tags und Links javascript google-chrome