[JS] Jak przeładować stronę po zmianie rozmiaru okna?

0

Witam,

tak jak w temacie, szukam sposobu na przeładowanie strony po zmianie wielkości okna.

Jakby ktoś miał pomysł proszę pisać.

Z góry dzięki.

0
function checkResolution() {
	if (parseInt(navigator.appVersion)>3) {
		if (navigator.appName.indexOf("Microsoft")!=-1) {
			winW = document.body.offsetWidth;
			winH = document.body.offsetHeight;
		} else {
			winW = window.innerWidth;
			winH = window.innerHeight;
		}
	} else {
		return false;
	}
	return new Array(winW, winH);
}

Zwraca tablicę z rozmiarem X i Y.

0

Mhm...

document.body.onresize = function (){
   window.location.reload();
}
0

@Demonical Monk:
Chyba coś Ci się pokićkało :). Autor pytał o coś zupełnie innego. W sumie z jego pytania wcale nie wynika, że potrzebuje znać wymiary okna.

Tak przy okazji, na wypadek gdyby kod był Twój, a nie przeklejany: nie "new Array(w, h)", tylko po prostu "[x, y]". Bądźmy ekologiczni!

@bieniomajster:
O ile mi wiadomo, takie podstawianie zdarzenia onresize nie działa. Zamiast "document.body.onresize" powinno być "window.onresize".

0

dzięki wszystkim za odpowiedź!

Przejrzałem po kolei wszystkie obsługiwane zdarzenia i natrafiłem na to co napisał Keraj i bswierczynski, tzn. zdarzenie onResize :)

W razie jakby ktoś chciał wiedzieć to samo przeładowanie wygląda u mnie następująco:

<body onResize="window.location=window.location;"> .. </body>

Działa w 100% pod każdą z przeglądarek więc polecam ;)

Temat do zamknięcia.

0

W każdym razie ja bym tego ostrożnie używał, bo przecież odświeża stronę od razu po lekkim resize co czasami może spowodować przestanie rozszerzania (systemowe "odciśnięcie" klawisza) no i zamęczy serwer głupimi zapytaniami. Dlatego to powinno być stosowane z głową i na timerze - jeśli ktoś przesuwa cały czas, to nic nie robisz. Jak wreszcie skończy przesuwać (5 sekund to samo położenie) to odświeżasz stronę...

0

@Demonical Monk: słuszna uwaga, po co męczyć serwer ;) dopisze dziś timer, thx

0

Słusznie.. ale myślę, że w 5 sekund to user zdąży kliknąć gdzieś w oknie i zacząć już coś np wpisywać, a tu bach, storna mu się przeładowała.. wkurw:)

0

No ja daję w przybliżeniu, zawsze trzeba dostosować do ilości formularzy, czasu reakcji usera etc.

0

Ustaw sobie taki test, niech licznik wświetla na stronie ile czasu mija pomiędzy wywołaniami onresize - i resizuj sobie okno, zobacz co wyjdzie.
Weź mniej więcej średnią z tego pomnożoną przez 2 ustaw sobie jako limit timera :>

0

Zrobiłem timer i wygląda on następująco:

<html>
	<head>
		<script type="text/javascript">
			var time=0;
			var timer;
			var timerOn=false;
			function doTick(){
				document.getElementById('txt').value=time;
				time+=1;
				if(time >= 4){ // Czas w milisekundach
					clearTimeout(timer);
					timerOn = false;
					window.location=window.location;
				}
				timer=setTimeout("doTick()",100);
			}
			function doTimer(){
				if (!timerOn){
					timerOn=1;
					doTick();
				}
			}
			function timerSet(){
				time=0;
				if(!timerOn) doTimer();
			}
			</script>
		</head>
	<body onResize="timerSet()">
	<input type="text" id="txt">
	</body>
</html>

Jeśli ktoś ma jakieś propozycje co można ulepszyć to chętnie wysłucham ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1