ugrás a tartalomhoz

nem a tényleges ablakméretet adja vissza a offsetWidth/Height

szabozee · 2007. Aug. 17. (P), 18.02
Az alábbi script -elvileg- lementi az aktuális window méretet, majd beállítja 800x600-ra. Mikor megnyomom a vissza gombot a böngészőben, akkor meg visszaállítja az eredeti ablakméretet. DE NEM! Mégpedig azért, mert a document.documentElement.offsetWidth és Height párja sem azt a méretet adja visza(IE és FF nél sem), mint amekkora a window, hanem egy kicsivel kevesebbet, így mindig egy kicsit kisebb lesz az ablak, míg el nem fogy. Bár semmi jelentősége nincs, hogy onload-ban van-e, vagy sem, de onloadban is ugyanazt adja vissza. Rengeteg alternatíva van, ahogy meg lehet oldani ugyanezt a feladatot. Nem alternatív megoldást keresek, hanem az a kérdés, hogy így miért nem jó, mi a hiba ebben a kódban ?
  1. window.onunload = unloadPage;  
  2. Width=document.documentElement.offsetWidth;  
  3. Height=document.documentElement.offsetHeight;  
  4. function unloadPage(){ window.resizeTo(Width,Height); }  
  5. window.resizeTo(800,600);  
 
1

innerwidth, clientwidth

Ajnasz · 2007. Aug. 17. (P), 18.36
http://www.howtocreate.co.uk/tutorials/javascript/browserwindow
2

Köszönöm a gyors választ, de nem itt van a kutya elásva.

szabozee · 2007. Aug. 17. (P), 22.04
Pontosítok a kérdésen. Nem az a gondom, hogy nemtudom megoldani a "feladványt", hanem az, hogy szépen nem tudom megoldani.

index.html
  1. <body><a href="index2.html">Klikk</a><body>  
Az általad javasolt módon 'patchelt', de hibásan működő
index2.html
  1. <head>  
  2. script type="text/javascript">  
  3. var myWidth = 0myHeight = 0;  
  4. window.onunload = function() { window.resizeTo(myWidth,myHeight); };  
  5. window.onload = function() {  
  6.   if( typeof( window.innerWidth ) == 'number' ) {  
  7.     //Non-IE  
  8.     myWidth = window.innerWidth;  
  9.     myHeight = window.innerHeight;  
  10.   } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {  
  11.     //IE 6+ in 'standards compliant mode'  
  12.     myWidth = document.documentElement.clientWidth;  
  13.     myHeight = document.documentElement.clientHeight;  
  14.   } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {  
  15.     //IE 4 compatible  
  16.     myWidth = document.body.clientWidth;  
  17.     myHeight = document.body.clientHeight;  
  18.   }  
  19.   window.resizeTo(800,600);  
  20. }  
  21. </script>  
  22. </head>  
  23. <body>[vissza] a browseren<body>  
A jól működő, de csúnya megoldás
index2.html
  1. <head>  
  2. script>  
  3. var OldWidth = 0;  
  4. var OldHeight = 0;  
  5. var myWidth = 0;  
  6. var myHeight = 0;  
  7.   
  8. function calcMyWH() {  
  9.   if( typeof( window.innerWidth ) == 'number' ) {  
  10.     //Non-IE  
  11.     myWidth = window.innerWidth;  
  12.     myHeight = window.innerHeight;  
  13.   } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {  
  14.     //IE 6+ in 'standards compliant mode'  
  15.     myWidth = document.documentElement.clientWidth;  
  16.     myHeight = document.documentElement.clientHeight;  
  17.   } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {  
  18.     //IE 4 compatible  
  19.     myWidth = document.body.clientWidth;  
  20.     myHeight = document.body.clientHeight;  
  21.   }  
  22. }  
  23.   
  24.   
  25. window.onunload = function() { window.resizeTo(OldWidth,OldHeight); };  
  26. window.onload = function() {  
  27.   calcMyWH();  
  28.   window.resizeTo(800,600);  
  29.   OldWidth=myWidth;  
  30.   OldHeight=myHeight;  
  31.   calcMyWH();  
  32.   OldWidthOldWidth=OldWidth+(800-myWidth);  
  33.   OldHeightOldHeight=OldHeight+(600-myHeight);  
  34. }  
  35. </script>  
  36. </head>  
  37. <body>[vissza] a browseren<body>  
A head és a script közé mindkét index2.hml-nél vissza kell rakni a <-t hogy működjön. Valamiért azzal együtt nem tudtam feltölteni.

Remélem így érthetőbb, mi a gond. Hogyan tudom ezt a részt:
OldWidth=OldWidth+(800-myWidth);
OldHeight=OldHeight+(600-myHeight);

kihagyni a kódból ?