DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   (X)HTML, JavaScript, DHTML, XML, CSS (http://www.devprotalk.com/forumdisplay.php?f=8)
-   -   Javaskript - capture kada je browser maksimiziran (http://www.devprotalk.com/showthread.php?t=2096)

bojan_bozovic 22. 12. 2006. 12:02

Javaskript - capture kada je browser maksimiziran
 
Au, ovo je problem. Idite na http://www.quirksmode.org/viewport/compatibility.html

i skrolujte skroz dole. evo sta mi opera kaze, npr.

Citat:

self.screenX: -4 WTF
self.screenY: -23 WTF
self.innerHeight: 592
self.innerWidth: 1018
self.outerHeight: 655 a treba 715px toliko je bez taskbara
self.outerWidth: 1028 O RLY? Ekran je samo 1024px!
self.screen.height: 768
self.screen.width: 1024
self.screen.availHeight: 715
self.screen.availWidth: 1024
self.screenTop: 101
self.screenLeft: 5
self.screen.colorDepth: 32
self.screen.pixelDepth: 32
document.body.clientHeight: 592
document.documentElement.clientHeight: 5955
nonsense starts, 1002px, sta je 1002px?
document.body.clientWidth: 1002
document.documentElement.clientWidth: 1002
document.body.scrollHeight: 5955
document.documentElement.scrollHeight: 5955
document.body.scrollWidth: 1002
document.documentElement.scrollWidth: 1002
document.body.offsetHeight: 592
document.documentElement.offsetHeight: 5955
document.body.offsetWidth: 1018
document.documentElement.offsetWidth: 1002
i IE npr.

Citat:

self.screen.height: 768self.screen.width: 1024
self.screen.availHeight: 715
self.screen.availWidth: 1024
self.screenTop: 93
self.screen.colorDepth: 32
document.body.clientHeight: 598
document.body.clientWidth: 1004
document.body.scrollHeight: 5997
document.documentElement.scrollHeight: 602
document.body.scrollWidth: 1004
document.documentElement.scrollWidth: 1024
document.body.offsetHeight: 602
document.documentElement.offsetHeight: 602
document.body.offsetWidth: 1024
document.documentElement.offsetWidth: 1024
E da, samo sto visina nije ispravna, zar ne? 602 a treba 715.

Resenje mi samo za IE treba, da na onresize event znam kada je browser maksiimiziran. Kako da napisem onresize handler, help! (Razni shellovi za IE kako daju rezultate, sta ja znam AvantBrowser, pa sa toolbarima kako je ne znam...) Ovo je da se covek za glavu uhvati, 1028 px na ekranu od 1024,
Mozilla Seamonkey (Gecko 1.8) ima outerWidth od 1032px, ni on nije bolji.
BTW 1002 ce biti sirina u operi bez toolbara, vidim ja...
Ko sto rekoh, samo u IE da radi, to je sve sto treba.

bojan_bozovic 22. 12. 2006. 12:13

Bah nadam se da je u IE izvodljivo, sad cemo videti da li ovaj Live toolbar menja vrednosti.

bojan_bozovic 22. 12. 2006. 12:17

IE+Live toolbar

Citat:

document.body.clientHeight: 574document.body.clientWidth: 1004document.body.scrollHeight: 5997document.documentElement.scrollHeight: 578document.body.scrollWidth: 1004document.documentElement.scrollWidth: 1024document.body.offsetHeight: 578document.documentElement.offsetHeight: 578document.body.offsetWidth: 1024document.documentElement.offsetWidth: 1024
Neresivo, daje mi 578px visinu sada.

noviKorisnik 22. 12. 2006. 12:47

Pa to ti je visina dokumenta u prozoru, a visina prozora uključuje i ram :-) ... aj virnuću malo po netu o tome ...

noviKorisnik 22. 12. 2006. 14:14

:-) ... evo, zahvaljujući muci odranije --- http://www.devprotalk.com/showthread.php?t=124

... za IE, u Quirks Modu, možeš da učiniš nešto, pogotovo ako okidaš na onresize ...
Kôd:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>t</title>
<script>
window.inresize = false;

deltaWidth = -1;
deltaHeight = -1;

iju = function ()
{
    if (window.inresize) return;

    window.inresize = true;

    if (deltaHeight < 0) {
        var innerWidth = document.documentElement.clientWidth;
        var innerHeight = document.documentElement.clientHeight;

        window.resizeTo (innerWidth, innerHeight);

        deltaWidth = innerWidth - document.documentElement.clientWidth;
        deltaHeight = innerHeight - document.documentElement.clientHeight;

        window.resizeTo (innerWidth + deltaWidth, innerHeight + deltaHeight);
    }

    window.inresize = false;

    outerWidth = document.documentElement.clientWidth + deltaWidth;
    outerHeight = document.documentElement.clientHeight + deltaHeight;

    window.status = (screen.availWidth - outerWidth) + ',' + (screen.availHeight - outerHeight);
}
</script>
</head>
<body onresize="iju ();">
</body>
</html>

(... prokleti hackovi, baš sam se namučio dok sam ovo naterao da radi ...

Kako se da primetiti - prozor je maksimizovan kada u Status baru piše -8, -8

ivanhoe 22. 12. 2006. 19:25

sto ovako cudno deklarises funkciju, preko anonimne funkcije i promenjive?

Jel postoji neki razlog za to, ili cisto onako, ima se-moze se ? :)

nixa 22. 12. 2006. 20:04

to ti je po PS-u :D

Ilija Studen 22. 12. 2006. 20:38

Citat:

Originalno napisao ivanhoe
sto ovako cudno deklarises funkciju, preko anonimne funkcije i promenjive?

Čudno? Što čudno? To je potpuno ispravan način definisanja fukcije.

noviKorisnik 22. 12. 2006. 22:24

To mi je već navika. Više mi se sviđa. A u nekim situacijama je bolje (mada sad baš ne mogu da se setim gde :-).

ivanhoe 22. 12. 2006. 22:25

pa nisam rekao da je neispravan nego da je cudan...

nisam pao sam marsa, znam da moze tako, samo zasto bi definisao anonimnu funkciju pa je dodeljivao globalnoj promenjivoj, kad postoji sintaxa koja je mnogo poznatija i sire rasprostranjena... pa pitam jel postoji neki poseban razlog za to, ili cisto covek voli tako da pise ?

pih... od kad su ovi Ruby-sti poceli da pisu javascript samo izmisljaju neke kerefeke.. ;):D

EDIT: odgovor je upucen Iliji, da ne bude zabune :)

noviKorisnik 23. 12. 2006. 12:35

Jako mi se sviđa ovaj tekst - A re-introduction to JavaScript - pored toga što je odličan uvod za one koji se prvi put sreću s jezikom, izuzetno je koristan za one koji JS koriste već dugo pa su moguće i nesvesni nekih novina koje su već godinama usvojeni standardi.

Tu recimo lepo piše da su ova dva načina zadavanja funkcije semantički ekvivalentna.

... u praksi se potom vrlo često sretneš s korišćenjem anonimnih funkcija - pri definiciji metoda objekata, hendlera za obradu događaja i slično - pa je stilski jednostavnije koristiti ih i za običnu definiciju funkcija.

Ako to neko ne ume da pročita, žao mi je, neka nauči jezik - bitno je da se taj kod valjano izvršava u browseru.

ivanhoe 23. 12. 2006. 14:21

ma ok, ali mislim da se time unosi nepotreban nivo komplexnosti u skript...

Mozda sam ja staromodan, ali ja ne vidim smisao u takvoj promeni stila, niti mislim da je to jednostavnije....ima svoje primene naravno, kao sto i kazu na Mozilla stranici: "It's extremely powerful, as it lets you put a full function definition anywhere that you would normally put an expression."... za to je takva sintaxa super, za to je koristim i ja ili kod dodele event-handlera. Ali za kreiranje staticnih funkcija mi se ne cini pogodno...

99% programskih jezika ima sintaxu za funkciju koja glasi:
kljucna_rec ime_funkcije (lista parametara)
gde je kljucna rec function, sub, def ili sta vec (ok, strong-typed jezici imaju jos i definiciju tipova, ali struktura je ta).

Sto znaci da ako napises klasicno function pera (a, b, c) { } to ce moci da procita svaki programer na planeti zemlji, ako napises preko dodele reference na anonimnu funkciju (mada je to apsolutno tacna sintaxa) to ce moci da procita samo neko sa iskustvom u naprednom JS-u, a sve ostale ces zbuniti... plus imas vise da kucas..:)

just my $0.02 :)

Petar Marić 23. 12. 2006. 14:51

Hehe, obfuscation as in Perl :D

bojan_bozovic 23. 12. 2006. 15:48

Jos kad velike zagrade ne bi postojale uopste (paskaloidna sintaksa)...
Citat:

Mozda sam ja staromodan
Ja sam jos vise, camelcase me dovodi do ludila, cas insentivity mi treba ;)

Da nastavim offtopic, sve sto se moze zloupotrebiti zloupotrebi se, case sensitivity na simbolima -> camelcase ;)

zextra 24. 12. 2006. 14:50

Citat:

Originalno napisao Petar Marić
Hehe, obfuscation as in Perl :D

Zasto vam je perl sinonim za neuredan kod? :(

@bojan: zar bi tebi bilo normalno da u programima koje pises na jednom mestu stavis varijablu kao ExampleVar, na drugom examplevar a na trecem EXAMPLEVAR, samo zato sto ti se moze? Verovatno ne, a zasto ti onda case (in)sensitivity uopste igra uopste?

@ivanhoe: ako neko koristi sintaksu koja je "napredna", verovatno je koristi s razlogom... Koristiti neki vid sintakse da bi programeri, koji nisu strucni za dati jezik, razumeli tvoj kod je poprilicno besmisleno - ako neko hoce da menja tvoj kod, ne bi bilo lose da se prvo upozna sa sintaksom jezika, zar ne?

Nemoj da sad navodim perl primere :D

bojan_bozovic 24. 12. 2006. 15:53

Zbog camelcase - naravno da ja to ne koristim, ali drugi koriste.

Petar Marić 24. 12. 2006. 15:57

Citat:

Originalno napisao zextra
Zasto vam je perl sinonim za neuredan kod? :(

Imaš pravo 3 puta da pogađaš ;)

noviKorisnik 24. 12. 2006. 16:06

$document -> get_element_by_id () ... ako neko ne voli kamile ;-)

Ilija Studen 24. 12. 2006. 16:18

Citat:

Originalno napisao zextra
ako neko koristi sintaksu koja je "napredna", verovatno je koristi s razlogom... Koristiti neki vid sintakse da bi programeri, koji nisu strucni za dati jezik, razumeli tvoj kod je poprilicno besmisleno - ako neko hoce da menja tvoj kod, ne bi bilo lose da se prvo upozna sa sintaksom jezika, zar ne?

Nije zato što si mi komšija, ali ovo stvarno ima smisla :D Na šta bi ličilo da sav kod optimizujemo tako da je razumljiv i laicima koji su tek krenuli sa određenim programskim jezikom...

Off Topic: Što se camel vs underscore tiče sve je stvar kakve konvencije usvojiš. Npr. meni su sve promenljive i funkcije underscore, dok su mi imena svih klasa i metoda camel, a konstante su uvek upper. Python mi se ne sviđa upravo zbog tog hakeranskog pristupa - skoro sve je underscore i sve skraćuju (get_cmd_args). To mi je ružno. Doduše, mogu da se pohvalim da imam klasu Angie_DBA_Generator_Relationship_HasAndBelongsToMa ny, ali to je više zbog odsustva podrške za namespace u PHP-u i moje želje da budem dosledam konvencijama koje pokušavam da izgradim u kodu (ako se lead developer na nekom projektu ne pridržava konvencija, niko neće), nego zato što to smatram dobrim i pohvalnim. No, to je sad već neka druga priča... Živeli kraljevi offtopica!

ivanhoe 25. 12. 2006. 00:13

Citat:

Originalno napisao Ilija Studen
Na šta bi ličilo da sav kod optimizujemo tako da je razumljiv i laicima koji su tek krenuli sa određenim programskim jezikom...


sad ste mnogo rasilirili pricu, radilo se o stilu deklaracije funkcije u JS, ne o nekoj extra "optimizaciji za laike"... a tu se ne radi o laicima, radi se o uobicajenom vs. neobicajenom (ili bar manje uobicajenom) stilu formatiranja koda...

no dobro, u krajnjoj liniji to je pitanje ukusa, ja cu svoje funkcije i dalje da pisem na stari nacin, a vi pravite anonimne i svi srecni :)

Eh, da.. Srecan bozic, onima kojima je bozic...:)

degojs 25. 12. 2006. 00:47

Ma bre ivanhoe, pa reci im da nauče jedan osnovni princip u programiranju: KISS - Keep It Simple, Stupid :1085:

noviKorisnik 25. 12. 2006. 01:02

Citat:

Originalno napisao ivanhoe
Eh, da Srecan bozic, onima kojima je bozic...:)

Hvala :-)


Vreme je GMT +2. Trenutno vreme je 04:00.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.