Autor Zpráva
Luko
Profil *
Zdravím,
potrebujem pomôcť doladiť tento kód:
window.onload = function (){
    var window_height = window.screen.availHeight;
    var website_height = document.body.offsetHeight;

    if ((window_height * 1.5) < website_height){
        var link = document.createElement ("a");
            link.href = "#";
            link.className = "go_to_top";
            link.title = "Go to top of the page";
        var icon = document.createElement ("img");
            icon.src = "/img/top.png";
            icon.width = "64";
            icon.height = "46";
            icon.alt = "Top of page";

        link.appendChild (icon);
        document.getElementById ("main").appendChild (link);
    }
}
Jeho úlohou je zobrazenie odkazu "Prejdite na vrch stránky". Snažím sa docieliť to, aby sa odkaz zobrazil len v prípade, že je obsah stránky (jej výška) 1,5 krát dlhší/väčší ako je výška úžitkovej plochy okna prehliadača. Problém je, že k zobrazeniu odkazu dochádza v praxi len v Mozille Firefox, Opere a Internet Exploreri. Google Chrome ani Safari odkaz vôbec nezobrazia. Asi sa z nejakého dôvodu nesplní podmienka. Neviete v čom by mohol byť problém? Ďakujem.
Joker
Profil
Luko:
Tak si nechte třeba do konzole vypsat hodnoty window_height a website_height a uvidíte, jestli tam jsou očekávané hodnoty.

Ale odvozovat prostor pro stránku od screen.availHeight (což by měla být dostupná výška obrazovky pro maximalizované okno) mi nepřipadá šťastné. I když moderní prohlížeče se obvykle snaží dát maximum prostoru stránce a moc nepřekážet, přesto nějaký prostor zaberou. A dost lidí má taky různé toolbary, často nedobrovolně (zanese jim to tam nějaká aplikace a oni to neumějí odstranit), někteří dokonce i dobrovolně, v každém případě to zabere další prostor. Viděl jsem dokonce i prohlížeč (na netbooku), kde na samotnou stránku zbývala sotva polovina dostupné výšky okna.
A naopak při prohlížení stránky v celoobrazovkovém režimu může dostupný prostor pro stránku být dokonce větší, než je hodnota screen.availHeight.

Obecně platí, že objekt window.screen je pro běžné stránky užitečný málokdy a z rozměrů ve screen.* nelze odvozovat rozměry na stránce.
Přesnější hodnota by asi byla window.innerHeight.
Akorát ji nemá IE < 9, tam by mělo fungovat document.documentElement.clientHeight, takže:
var window_height = window.innerHeight || document.documentElement.clientHeight;
by snad mělo fungovat všude.
Luko
Profil *
Ďakujem za pomoc, funguje to presne ako má.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: