ugrás a tartalomhoz

Netscape oldal átméretezésnél location.reload() - de hogy?

Skyzetor · 2007. Jan. 21. (V), 20.03
Hi!

Beleütköztem egy problémába. Azt szeretném, hogy az oldalam automatikusan újratöltődjön, ha a böngészőablak méretét megváltoztatják. Ezt ugye az ember fia IE alatt rém egyszerűen megoldja a

<BODY onResize=location.reload()>

című kis zöngeménnyel, de mi a helyzet netscape alatt? Valószínűleg láma kérdés, de újszülöttnek minden vicc új! Sok helyen találtam ezt, de nem igazán műxik (ha jól értelmezem, ez amúgy is csak NN4-re vonatkozik):

function MM_reloadPage(init) { //reloads the window if Nav4 resized
if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

Már kockára olvastam a szemem, és egymillió cikket átolvastam, de nem találtam működő megoldást.


HELP ME!!!
 
1

Event

janoszen · 2007. Jan. 21. (V), 20.18
Hozzá kell rendelni egy eventet, ahogy csináltad is, de a függvényt kellene meghívni. De miért kell újratölteni, ha átméreteződik az ablak? Ennek nem sok értelmét látom...
2

szárnypróbálgatás

Skyzetor · 2007. Jan. 21. (V), 21.26
Megmondom őszintén, nem igazán értem, amit írtál, de csak most kezdek ismerkedni a javascriptel.

Van egy háromoszlopos táblázat, és azt akarom, hogy minden oszlop mérete adott legyen. Amikor átméretezik az oldalt, akkor újratöltődik a táblázat, lekérdezi az ablak új méreteit, majd kiadja a táblázatot az új méretekkel.

Én csináltam egy ilyet:

i=0;
function ujratolt() {
i++;
if(i>2){
location.reload();
}
}
window.onresize = ujratolt;

ahol i szépen növekszik, ahogy méretezgetem az ablakot, de az újratöltés nem valósul meg. Ha window.onresize = ujratolt(), akkor viszont csak egyszer fut le, és utána mintha nem foglalkozna az onResize-zal. Ez miért van? Biztos alapkérdések, de sehol nem találtam rá választ, pedig két napja csak ezután olvasgatok a neten!
3

érdekes

Hodicska Gergely · 2007. Jan. 21. (V), 21.36
Szia!


<BODY onResize=location.reload()> Ez helyesen minimum így nézne ki: <body onresize="window.location.reload();">

Ami viszont érdekes, hogy így sem jut érvényre FF alatt. Első körben valami fajta időzítésbeli anomáliára gondoltam, pontosan utánajárni nincs kedvem. Ez a kód működik:
<?php
	session_start();
	@$_SESSION['foo']++;
?>
<html>
	<body onresize="setTimeout('window.location.reload()', 1);">
		<?php echo $_SESSION['foo']; ?>
		<button onclick="window.location.reload();">
	</body>
</html>
Üdv,
Felhő

u.i.: Proclub: az újratöltő kódnak 4.7-es Netscape esetén volt értelme, ugyanis ha használtál layereket, és átméretezték az oldalt, akkor az szétesett. A függvényben az init rész azért van, mert scrollozásra is meghívódott az onresize, olyankor viszont nem lett volna nyerő az újratöltődés. Ma már valóban nem tiszta, hogy miért van erre szükség.
4

layer

Skyzetor · 2007. Jan. 21. (V), 21.59
Hi!
Dreamveawerben gyártott előugró menüt szeretnék egy középre igazított oldalra tenni, de úgy vettem észre, hogy a firefox nem igazán szereti, ha nem a bal felső saroktól adom meg a méreteket. Hogy a tartalom középen lehessen, és a menüt bal felülről tudjam pozicionálni, ehhez kell, hogy mindíg ismerjem a bal oldal és az oldal törzse közötti távolságot. Így elkerülöm azt, hogy ha átméretezik az oldalt, akkor elcsússzon a menü. Egy linkel simán működik, itt épp az onResize eseményen van a hangsúly. Lehet, hogy favágó módszer, de mint írtam, mostanában kezdtem el foglalkozni ezzel.
Laci
5

Tanuld meg inkabb hogy mukodik

Jano · 2007. Jan. 21. (V), 22.26
Inkabb tanuld meg, hogyan mukodik a pozicionalas!
Archivum: http://del.icio.us/weblabor_forum/position

Konkretan ezt a kommentemet:
http://weblabor.hu/forumok/temak/9725#comment-17050

Illetve ha tablazattal dolgozol, akkor ezt is jó tudni:
http://weblabor.hu/forumok/temak/11511

Ezt pedig CSS-sel történő középre igazításhoz:
http://users.hszk.bme.hu/~hj130/css/elmelet/center/
6

Ajjajajajajajaj

janoszen · 2007. Jan. 21. (V), 22.27
Te, a JavaScript nagyon nem erre való. Ez kb olyan, mintha egy fametsző ollóval próbálnál hajat vágni...

Próbáld meg leírni egy kicsit részletesebben, mit szeretnél, akár egy grafikai tervvel is és inkább segítünk megcsinálni az oldal kinézetét.

ui. a 4.7-es Netscape kicsit elavult.
7

Előre is köszönöm!!!

Skyzetor · 2007. Jan. 22. (H), 22.17
Hát a project:

www.windguru.hu/uj --> üdülőhelyek (ez még egy elavult táblázatos oldal, ahogy itt olvasgatok).

Azt szeretném, hogy az oldal törzse fix széles legyen, de szegényes ismereteim alapján ha középről igazítom a layereket, akkor mozillában össze-vissza jelenik meg a menü (a menüt dreamweaverben gyártottam, timeline segítségével, mert a beépített szerkesztő végeredménye nem tetszett, ez is csak egy próbaverzió). Ezt úgy küszöböltem ki, hogy a keret két szélét fixre állítottam, és a bal felső sarokhoz igazítottam mindent, de így nem tetszik. Arra gondoltam, hogy írok egy scriptet, ami lekérdezi az ablak belső méretét, és fixre állítom a keretet, a menüvezérlő scriptben meg egy php lesz a dimenzió adatoknál, és mindíg az aktuális méretekkel fut majd le.

Demivel...ha így fix kerettel átméretezik az oldalt, akkor egy része kicsúszik az ablakból, ami nem szép! Erre gondoltam megoldásként, hogy minden onResize eseménynél újratöltöm az oldalt, ami nem tarthat túl sokáig, egyrészt, mert már sajátgépről hívja meg (kivéve, ha ezt kitiltotta), másrészt nem lesz túl sok kép az oldalon, ami sokáig töltődne. Ez IE alatt műxik is rendesen, de NN vagy FF nem hajlandó reloadolni az istennek sem, nemhogy nekem...

V.színűleg ez tényleg metszőollós módszer a ti tudásotokhoz képest, de mentségemre legyen mondva, hogy tényleg csak most ismerkedem a dolgokkal, könyvekből (amik ezek szerint kissé idejemúltak) meg tőletek tanulok. Valamiért úgy érzem, hogy ezt a témát is át kell rágnom még egy "kissé"!

Egyébként ez a metszőollós dolog sem idegen tőlem, mert főállásban hivatásos katona vagyok, úgyhogy láttam már egy-két csodát! :-)
8

Nem bonyolult

janoszen · 2007. Jan. 22. (H), 22.34
Nem bonyolult a feladat. Először is, szedjük szét a feladatot. Legyen a body háttere az a kékes árnyalat plusz mondjuk a felső vonal. Ez elég, ha 5 px széles és CSS-sel ismétlődik.

Aztán legyen egy ilyen:

<div id="container">
</div>
Ennek a CSS kódja nézzen ki így:

body
{
 padding:0px;
 margin:0px;
 text-align:center;
}

#container
{
 position:relative;

 width:750px;

 margin-left:auto;
 margin-right:auto;

 text-align:left;
}


Eddig a container szépen középre van igazítva. Ebbe beleteheted a tartalmat.

Namost a lábléccel lesznek gondok. Ezzel vagy azt csinálod, hogy a container-en kívülre rakod és középre igazítod valamint adsz neki egy hátteret, vagy a html-body párossal próbálsz trükközni, hogy kihozza a hátteret.

De lényegileg ez a menete,
9

ez igy jó

Skyzetor · 2007. Jan. 23. (K), 22.08
Hát ez műxik rendesen, meglátjuk mit csinál, ha beteszem a menüt. Addig is kösz a segítséget.
10

Más megközelítésben...

Skyzetor · 2008. Már. 29. (Szo), 18.55
Hi! A megoldás az eredeti problémára rendkívül egyszerű volt, csak elfelejtettem leírni. Nem erőltettem ezt a

location.reload()

dolgot, hanem

onresize="atmeretez('oldal_neve.php')"

Meghívok egy ablakméreet lekérdező scriptet (milliót lehet kukázni a neten), majd

location('oldal_neve.php?magassag='+magassag)

Az újratöltött oldalon pedig az $_GET['magassag'] értékét megadom a td, div, p, stb... magasságának. Így lehet például a Jano által javasolt div-es megoldásnál a container magasságát plafontól a padlóig megadni. Ez persze csak akkor jó, ha olyan oldalt csinál az ember fia, ami nem lóg túl az ablakon, viszont így CSS-el mindent gyönyörűen lehet igazítani alulról is, pl. ha alul is van v.mi design elem, amit lentről akarsz megadni.