ugrás a tartalomhoz

Böngészőfüggetlen teljes dokumentum méret.

s_volenszki · 2008. Ápr. 22. (K), 10.33
Sziasztok!

Elhatároztam, hogy egyszer s mindenkorra rendbe rakom ezt a kérdést (legfőképpen a fejemben) de nem jutok előre.

Le akarom kérdezni JS-el az aktuális böngésző ablakban megnyílt dokumentum teljes méretét. Nem titok, AJAX közben le akarom fedni egy átlátszó div-vel (pl startlap mikor be akarsz jelentkezni). Volt is ezidái egy működő verzióm, de egy érdekes igény következtében kiderült, hogy nem is az! Ugyan is mint kiderült, átméretezéskor nem a keletkező szükséges legnagyobb méretet veszi fel, hanem a kliens teljes szélességét.

Próbálgattam prototype-val, mindenképpen ebben gondolkozom, másra is használom. Ezeket tettem ezidáig:

Adtam body-nak egy id-t és:

       var body_dimensions = $('body').getDimensions();
       Width = body_dimensions.width + 'px';
       Height = body_dimensions.height + 'px';
       $('cover').setStyle({width: Width,height: Height,display: 'block'});
Ez ugye nem lett jó, mert csak a látható területet adja vissza a scroll nem látható területét nem. Ráadásul ha kisebb a body mint az oldal teljes magassága és szélessége akkor meg csak egy töredékét az oldalnak.

Ezek után egy kitétellel megnézettem, hogy a body magassága és szélessége kisebb-e mint window.innerHeight és window.innerWidth. MErt ha igen, akkor ezen méretekre nyújtja a fedést. Ez tökéletesen működik, mindaddíg, amíg a tartalom nem lesz nagyobb, mint a látható ablakfelület.

Próbáltam azt, hogy csináltam egy div-et ami befoglalta a teljes tartalmat. Adtam neki width:100%-ot de átméretezésnél ez is a látható ablakméret szélességét veszi fel (a magasság az jó, bár ugyan az mint a body magassága).

Azt kellene valahogyan kiderítenem, mekkora a teljes szélesség és magasság, vagy mekkorák a nem látható scroll területek méretei.

Légyszi adjatok néhány tanácsot, doksit...Köszönöm!

s_volenszki
 
1

jQuery

Poetro · 2008. Ápr. 22. (K), 11.47
Nem tudom, hogy prototype-ban hogy van, de jQuery alatt a következő függvények a helyes dimenziókat adják:

var height = $('body').height();
var width = $('body').width();
Valószínűleg prototype alatt is van ugyanilyen függvény, legfeljebb más a neve.
3

$('body').height is not a function!

s_volenszki · 2008. Ápr. 22. (K), 12.19
Ezt mondja:

$('body').height is not a function! egyébként így működik, de ez is csak a látható méretet adja meg: $('body').getHeight.

Köszönöm a tanácsot, megnézem a jQuery-t!
4

Szerintem is...

Velias9 · 2008. Ápr. 22. (K), 16.10
... jobb lenne a jQuery (márcsak azért is mert ebben tudok segíteni, de a vége rajtad áll). A dimenziókhoz kell ez a plugin.
Ha a látható szélességet akarod, akkor:

$(window).outerWidth();
Ha a telljes szélességet, akkor pedig:

$(document).outerWidth();
Amúgy én is csináltam már egy ilyet és megoldottam, hogy ne lehessen görgetni és csak az ablak szélességére álítottam be.
5

Már ismrekdem a jQuery-vel...

s_volenszki · 2008. Ápr. 22. (K), 17.05
...de már el is akadtam. Az mit jelent, hogy
Removed height, width, offset and offsetLite in favor of core versions

Nem tudom, hogy van-e köze hozzá, de a letöltött plugin a $(window).outerWidth(); -sorra így reagál:
Hiba: uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///D:/Development/jQuery/jquery.js :: anonymous :: line 853" data: no]


szerk.:
Ha a plugin-nal együtt letöltött demo fájlba beleírom ezt: alert($(document).outerWidth()); akkor ezt mondja:
Hiba: elem.style has no properties
7

hiba?

Poetro · 2008. Ápr. 22. (K), 23.20
Nem tudom, hogy van-e köze hozzá, de a letöltött plugin a $(window).outerWidth(); -sorra így reagál:


Nem lehet hogy neked a
$('body').outerWidth();
kell?
8

Hiba.

s_volenszki · 2008. Ápr. 23. (Sze), 11.38
Minden variációt kipróbáltam és ugyan az a hiba, azonban a $(window).width/height és a $(document).width/height működik.
9

Nem a tömörítettet szedted le?

Velias9 · 2008. Ápr. 23. (Sze), 15.23
Amikor én egy tömörített verzióval próbáltam valamit is kezdeni, akkor h*lyeségeket csinált.
Ha így van, akkor szedd le a nem tömörítettet és próbáld azzal. Mellesleg én is onnan szedtem le és nekem mind a 'window', mint a 'document' objektumra tökéletesen működik.
6

jQuery 1.2

Poetro · 2008. Ápr. 22. (K), 23.19
Az 1.2 óta nincs szükség a pluginre, a width, height számolása teljesen természetes, a dimensions plugin csak pár dolgot ad hozzá az amúgy sem szegényes kínálathoz.
2

prototype-shmototype

vbence · 2008. Ápr. 22. (K), 12.03
Egy kísérleti cuccomban ez működik. A tesztelt böngészőkön ment...

SmokeScreen.resize = function (event) {
	if (!SmokeScreen.actual)
		return;
	SmokeScreen.actual.style.height = "1px";
	SmokeScreen.actual.style.height = Math.max(window.innerHeight ? window.innerHeight : 0, document.documentElement.clientHeight, document.documentElement.scrollHeight) + "px";
	if (document.all)
		SmokeScreen.actual.style.width = document.documentElement.clientWidth + "px";
}
Persze window.resize-ra újra kell futtatni...