2016-04-29 22 views
0

Vielleicht ist diese Frage nicht in so ‚Problem/gelöst‘ -Version, aber ich bin immer noch neugierig: In Javascript, wenn wir hypothetischen EreignisWas passiert, wenn ein Ereignis ausgelöst wird

_addEvent(window,"resize", 
      function(){ 
       location.reload(); // needed to reload page when it is resized 
       //somefunctions 
      } 
     ); 

und tun Sie etwas Art machen configuration with in event [in somefunctions part], wenn Seite die Größe ändert, erbt die neue [resized] Seite in irgendeiner Weise Javascript und CSS von vorher und geht dann zu dem Event, nachdem es erneut skaliert wurde?

Nur neugierig, in welchen Stadien DOM-Objekt durchgeht, wenn die Größe der Seite geändert wird, und dann erneut die Größe geändert wird.

Beispiel für eine reale Welt: Größe des Browserfensters auf dem Computer so anpassen, dass es auf die Hälfte des Bildschirms passt, dann wird die Größe erneut auf einen Vollbildschirm geändert.

Antwort

0

Wenn die Größe einer Seite geändert wird, wird der Seiteninhalt nicht vom Browser geändert. Die Fenstergröße wird geändert, der Browser führt das Layout erneut für den vorhandenen Inhalt aus, um zu entscheiden, wo die Objekte im neu bemessenen Fenster angezeigt werden sollen, und dann wird das Größenanpassungsereignis ausgelöst.

Wenn der Resize-Handler Änderungen am DOM vornimmt, entscheidet der Browser erneut, ob ein neues Layout erneut erstellt werden muss, aber dies löst kein weiteres Resize-Ereignis aus.

Wenn Sie ein location.reload() im Resize-Handler zu tun (die wie eine schreckliche Idee klingen durch die Art und Weise), dann laden Sie eine ganz neue Seite und die neu geladene Seite wird gerade in die aktuelle Fenstergröße laden. Es wird kein weiteres Resize-Ereignis für die neu geladene Seite geben, wenn die Fenstergröße nicht erneut vom Benutzer geändert wird.

location.reload() erbt nichts außer Cookies und localStorage von der vorherigen Seite. Der Inhalt wird von Grund auf neu geladen (ein Teil davon kann aus dem Cache stammen), der Browser analysiert das von Grund auf neu und startet eine neue Seite erneut. Es wäre so, als würde man F5 im Browser drücken, um die Seite neu zu laden.

+0

danke für die heads-up! : D ich kopierte gerade das von irgendeinem Code, bemerkte nicht einmal: o aber wenn ich irgendein div habe, das ist in der vollen Bildschirmansicht auf der linken und in der halben Bildschirmansicht auf der rechten und kleineren in der Dimension und in allen das wird von js geregelt (no css included) ist es immer noch der gleiche Prozess? – Danilo

+0

@Danilo - Gleicher Prozess. 'resize' Ereignisse treten unabhängig davon auf, was Ihr JS gerade macht. Sie können JS zum Positionieren oder Ändern der Größe von Elementen in einem 'resize' -Ereignis verwenden. Das ändert nichts an dem resize-Ereignis. Dieses Größenänderungsereignis tritt NUR auf, wenn die Größe des enthaltenden Fensters geändert wird. Es hat nichts damit zu tun, dass Inhalte verändert werden. – jfriend00

+0

danke ein Haufen: D Cool zu wissen. – Danilo

Verwandte Themen