Autor | Zpráva | ||
---|---|---|---|
Mishoo Profil * |
#1 · Zasláno: 24. 6. 2013, 19:19:09
Zdravím,
potrebujem vyriešiť jednu takú vec :) Nie som zrovna expert do js a preto píšem sem :) Potrebujem asi niečo také aké je na Facebooku - keď kliknete na ,,zemegulu" pre zobrazenie upozornení (prípadne správ atd).. Inak povedané potrebujem aby sa o kliknutí v hlavnom menu jednak daná položka menu javila ako aktívna (napríklad pomocou :focus) a zároveň sa objavilo to okno pod touto položkou.. Avšak akonáhle kliknem mimo týchto dvoch prvkov (položka menu, okno) sa oba prvky schovajú :) Nechcem žiadne grafické riešenia len konkrétny js kód a prípadne ukážky toho čo mám v súvislosti s js vložiť do kódu HTML (položka menu, okno).. Ďakujem pekne :) |
||
Str4wberry Profil |
#2 · Zasláno: 24. 6. 2013, 20:32:47
Nedávno, jsem tu někomu odkazoval tuto ukázku. Stačí obyčejné přepínání třídy.
Aby to fungovalo jako na Facebooku, bylo by ještě potřeba doplnit skrývání při kliknutí někam mimo. |
||
Mishoo Profil * |
#3 · Zasláno: 25. 6. 2013, 12:00:48
Dík, a to doplnenie po kliknutí mimo ako spravím?
|
||
Str4wberry Profil |
#4 · Zasláno: 26. 6. 2013, 16:27:32
To už je trochu složitější, zkusil jsem to popsat.
|
||
Chamurappi Profil |
Reaguji na Str4wberryho:
„ <a onclick="funkce(event)" href="#">Rozbalit</a> “
V tomto případě se event předá do funkce ve všech prohlížečích stejně. V Mozille tam bude lokální proměnná event , v Exploreru globální window.event . Pak není nutné sjednocovat uvnitř funkce.
|
||
_es Profil |
#6 · Zasláno: 26. 6. 2013, 16:59:56
Str4wberry:
function nazevFunkce(e) { var e = e || window.event; // sjednocení pro Firefox e je zároveň aj lokálnou premennou funkcie, teda je príkaz var nadbytočný.
|
||
peta Profil |
#7 · Zasláno: 27. 6. 2013, 13:03:03
Jo, na tohle ti FF do chybove konzoly napise upozorneni, ze predefinovavas pomoci var definovanou promennou e. Nevim, zda je vhodne si zahlcovat ladeni zbytecnou hlaskou navic.
|
||
_es Profil |
#8 · Zasláno: 27. 6. 2013, 13:21:57
peta:
„Jo, na tohle ti FF do chybove konzoly napise upozorneni, ze predefinovavas pomoci var definovanou promennou e.“ Obávam sa, že si si to úplne vymyslel. Nič také chybová konzola nezaznamenáva. |
||
peta Profil |
Časová značka: 27.6.2013 14:08:59 Varování: TypeError: variable e redeclares argument Zdrojový soubor: file:///C:/x/js-click.htm Řádek: 3, Sloupec: 8 Zdrojový kód: var e = e || window.event; <script> function nazevFunkce(e) { var e = e || window.event; } </script> <a onclick="funkce(event)" href="#">Rozbalit</a> |
||
Str4wberry Profil |
#10 · Zasláno: 29. 6. 2013, 15:46:09
„V tomto případě se
event předá do funkce ve všech prohlížečích stejně.“
Nojo, je to tak. Díky. |
||
_es Profil |
#11 · Zasláno: 30. 6. 2013, 20:03:56
peta [#9]:
Jednak voláš funkciu funkce , no takú tam nemáš - je tam funkcia nazevFunkce . No aj po oprave názvu akosi v chybovej konzole nič také nevidím.
|
||
Časová prodleva: 29 dní
|
|||
peta Profil |
Jo, chybicka. Kdyby sis teda precetl chybovou hlasku, co sem poslal, tam se o nedefinovane funkci nic nerika. Tato chyba naskoci hned pri nacteni stranky, totiz.
function funkce2(event) { event = event || window.event; } |
||
_es Profil |
#13 · Zasláno: 29. 7. 2013, 09:17:52
peta:
„Tato chyba naskoci hned pri nacteni stranky, totiz“ V akej verzii Firefoxu? Lebo mne nijaká chyba „nenaskočí“. Respektíve by si na to mohol vyrobiť „živú“ ukážku. |
||
peta Profil |
_es: "„živú“ ukážku" [#9] peta, FF 22, web developer doplnek, colorzila, linkchecker, html validator 0.9.5.1 (algoritmus soubezne, urovem pristupnosti 3)
|
||
_es Profil |
#15 · Zasláno: 29. 7. 2013, 10:08:47
peta:
„‚živú‘ ukážku" [#9] peta“ To nie je „živá“ ukážka ( Povídání o živých ukázkách » Co živá ukázka není?). Ak píšeš „chybová konzola“, tak je tým snáď myslená „chybová konzola“ v menu prehliadača bez akýchkoľvek doplnkov a rozšírení, teda vymenovanie doplnkov nemá zmysel. |
||
patlal Profil |
#16 · Zasláno: 29. 7. 2013, 13:52:08
@peta: Varování není chyba, ale jen varování. Běh skriptu se nezastaví, tak proč z toho děláte takovou vědu?
|
||
peta Profil |
#17 · Zasláno: 30. 7. 2013, 13:08:58
_es: http://jsfiddle.net/f2bZJ/
(jedine, co jsem v tom kodu z #9 zmenil, je oprava te chyby v nazvu funkce) "Ak píšeš „chybová konzola“, tak je tým snáď myslená „chybová konzola“ v menu prehliadača" - no, dyt jo, je to v chybove konzoli. "bez akýchkoľvek doplnkov" - to ja nepoznam, jestli je ta hlaska z jakeho doplnku (jmeno doplnku tam neuvadi) a ani mne to nezajima. Doplnky jsem vyjmenoval prave proto, ze o muze byt z nektereho z nich. patlal: Neni pravda. S _es resime zobrazeni chyby, protoze o to pozadal. To je podobne, jak to furt nechapou lidi v kritice na stranku. Ja tam sepisi chyby, ktere se mi zdaji byt chybami. Jestli to za chyby povazuje nebo je opravi, je mi suma fuk. Upozornil jsem na to, co povazuji za chybu a co bych sam opravil. Tim to pro mne hasne. |
||
_es Profil |
#18 · Zasláno: 30. 7. 2013, 13:37:46
peta:
„no, dyt jo, je to v chybove konzoli.“ „to ja nepoznam, jestli je ta hlaska z jakeho doplnku“ Takže veta „na tohle ti FF do chybove konzoly napise upozorneni, ze predefinovavas pomoci var definovanou promennou e.“ je nepravdivá, lebo to do konzole „nenapíše“ samotný prehliadač, ale asi nejaký doplnok, ktorý si si do prehliadača nainštaloval. |
||
Chamurappi Profil |
#19 · Zasláno: 30. 7. 2013, 14:32:41
Reaguji na peta:
„Upozornil jsem na to, co povazuji za chybu a co bych sam opravil.“ Proč považuješ redeklaraci proměnné za chybu? „patlal: Neni pravda.“ Co není pravda? Varování opravdu není chyba, běh skriptu se nepřeruší. Sestavit jakýkoliv seznam hlášek je triviální, ale to ještě automaticky neznamená, že to nejsou blbosti. Za to, co sem napíšeš, neseš odpovědnost, nehledě na to, odkud to přebíráš. V důsledku je celkem jedno, jestli to hlásí sám prohlížeč, nebo nějaký doplněk — nám to hlásíš ty. |
||
peta Profil |
Chamurappi: Precti si, co patlal psal. Dik. Neni pravda, ze z toho delam vedu. Naopak, slusne odpovidam es na dotaz.
Proc bys redeklaroval uz jednou deklarovanou promennou. To nedava smysl. _es: Nechapu, oc ti jde. Napsal jsem, co mi to pise. Odpovedel ti, proc mi to pise, kde a mozna co. A ty mi ted zacinas vycitat, ze jsem si dovolil na ten problem vubec upozornit, ze sem ti dal zivou ukazku :) |
||
_es Profil |
#21 · Zasláno: 31. 7. 2013, 09:03:51
peta:
„Napsal jsem, co mi to pise.“ Písal si, že ti to „píše FF“, čo nie je pravda. Ak si do prehliadača nainštalujem nejaký doplnok, ktorý bude vypisovať do chybovej konzole trebárs každý výskyt čísla 13, tak to neznamená, že to tam „vypisuje prehliadač“. „Nechapu, oc ti jde.“ O objasnenie situácie, ako tie „upozornenia“ v chybovej konzole vznikli - čo vyzerá byť objasnené. Lebo neviem o tom, že by také upozornenia niekedy vyrábal FF. „je to v chybove konzoli. "bez akýchkoľvek doplnkov" - to ja nepoznam, jestli je ta hlaska z jakeho doplnku (jmeno doplnku tam neuvadi) a ani mne to nezajima.“ Takže teba nezaujíma, ako, prečo a odkiaľ sa tie hlášky do chybovej konzole dostali, len ich bez rozmyslu kopíruješ do diskusie - zaujímavý prístup. |
||
Chamurappi Profil |
#22 · Zasláno: 31. 7. 2013, 10:32:09
Reaguji na _es:
V about:config jde přepnout javascript.options.strict , pak může podobná varování chrlit i sám Firefox. Ale ne ve výchozím nastavení a neznám skoro nikoho, kdo by si to dobrovolně zapnul, protože to brzdí zpracování JS a testuje to i zcela neškodné věci, třeba použití přiřazení uvnitř výrazu v if u, čtení z nedefinovaného člena objektu apod.
Reaguji na peta: „Precti si, co patlal psal. Dik.“ Varování: TypeError: Na otázku začínající na „proč“ není platná odpověď „není pravda“. „Proc bys redeklaroval uz jednou deklarovanou promennou. To nedava smysl.“ Čemu to reálně vadí? Proč by se to mělo opravovat? |
||
peta Profil |
#23 · Zasláno: 31. 7. 2013, 12:42:42
Chamurappi, _es: "Proč by se to mělo opravovat?" [#17]. Nemusis. Povazuji za dobre vedet a upozornit na to, ze to muze a nemusi byt chyba. Zalezi na kodu. Fakt nevim, proc z toho delate takovou vedu. Vubec nezalezi na tom z jakeho ladiciho nastroje to mam a o jak prisny typ chyby jde. Napriklad ted, kdyz si pustim jakekoliv stranky s jquery, tak ve vsech mi to zaplaca konzolu s podobnou chybou. Coz ukazuje na kvalitu programovani jquery.
|
||
_es Profil |
#24 · Zasláno: 1. 8. 2013, 13:02:35
peta:
„kdyz si pustim jakekoliv stranky s jquery, tak ve vsech mi to zaplaca konzolu s podobnou chybou. Coz ukazuje na kvalitu programovani jquery.“ Ukazuje na to, ako je je kto schopný pracovať s prehliadačom. Ak tam tie upozornenia zobrazovať nechceš, prečo si si nastavil prehliadač tak, aby si ich tam mal? Prečo máš spustené ladiace nástroje brzdiace prehliadač, keď nechceš ladiť JS kód zobrazenej stránky? |
||
peta Profil |
#25 · Zasláno: 1. 8. 2013, 13:16:50
Ja je tam chci, je to chyba a je treba ji opravit.
|
||
Chamurappi Profil |
#26 · Zasláno: 1. 8. 2013, 14:06:58
Reaguji na peta:
„to muze a nemusi byt chyba. Zalezi na kodu.“ Ne, nezáleží, duplicitní deklarace není nikdy chyba. Může být nadbytečná, ale nesmí způsobit selhání. „Ja je tam chci, je to chyba a je treba ji opravit.“ Není to chyba, je to varování. Tím, že sis striktní varování zapnul, si brzdíš interpretaci JS. Kdyby tvůrci jQuery upravili svoji knihovnu tak, aby jsi žádné hlášky nedostával, zbrzdili by běh u všech uživatelů. To by ti připadalo správné? |
||
peta Profil |
#27 · Zasláno: 1. 8. 2013, 15:03:04
Promennou "e" definovanou mas v
nazevFunkce(e) , pouze muze mit undefined hodnotu. Nechapu, co by brzdilo.
|
||
Chamurappi Profil |
#28 · Zasláno: 1. 8. 2013, 15:22:23
Reaguji na peta:
Mluvil jsi o chybách v jQuery, ne o redeklaraci. Kdyby v jQuery ošetřili všechno, co ti hlásí tvá konzole, byl by kód té knihovny méně efektivní a méně stručný a žádná reálná pozitiva by to nemělo. Tohle nemá cenu. Opět se ukazuje, že je lepší tě mazat… |
||
Časová prodleva: 12 let
|
0