Autor Zpráva
Schmutzka
Profil
Mám text a potřebuji ho nechat zobrazit jen na prvních 5 sekund pobytu na stránce (na vypsání chybové hlášky s červeným pozadím, která pak uživatele už nezajímá). Jak na to?
johnl
Profil
Schmutzka:
Jak na to?
Zadat si do googlu „časování javascript“ (tam si najdeš setTimeout) a zadat si do googlu „skrývání objektů javascript“ (tam bys měl najít něco na způsob document.getElementById('div').style.display='none'), já vím že pro někoho kdo javascriptu absolutně nerzumí je to obtížné, ale zkoušel jsi to aspoň trochu.?
Medvídek
Profil
Schmutzka:

setTimeout ( "function or expression", delaytime );
ShiraNai7
Profil
Zkus použít jQuery .. s tím to uděláš snadno, rychle a s pěkným efektem :)

$('x').delay(5000).slideUp();


Namísto x dosadíš třeba třídu těch chybových hlášek, takže nějak takto:

$('.chybova-hlaska').delay(5000).slideUp();


Pokud máš nějaký javascriptový soubor na každé stránce, tak tam připiš následující.
To zařídí, že všechny elementy na stránce s třídou chybova-hlaska po pěti sekundách (5000 milisekund) zmizí.

$(document).ready(function(){
  $('.chybova-hlaska').delay(5000).slideUp();
});


A nezapomeň že před tím už musí být načten soubor s jquery..
<head>
...
<script type="text/javascript" src="cesta/k/jquery.js"></script>
<script type="text/javascript" src="cesta/ke/tvemu_skriptu.js"></script>
...
</head>
Schmutzka
Profil
johnl: používal jsem špatná klíčová slova. Timeout mne nenapadlo.

ShiraNai7: perfektní, přesně to jsem potřeboval. Díky moc.
pcmanik
Profil
ShiraNai7:
Paneboze, preco na jednoduche efekty treba pouzivat cely framework? Myslis ze podla teba ma vyznam kvoli jednej funkcii nacitavat cely framework?
ShiraNai7
Profil
pcmanik:
Nikdo ho nenutí, je to jen návrh. Může to využít jen pro tohle, nebo taky pro více věcí, které už má třeba řešené neelegantně jinak. A stahovat jednou nějaký 26kB javascript prohlížeč nezabije, o nenáročnosti ani nemluvím.
Witiko
Profil
ShiraNai7:
neelegantně
Elegance by měla jít ruku v ruce s efektivitou, jinak je samoúčelná a uživateli, který se zrovna nekochá elegancí zdrojového kódu, zcela na houby.

prohlížeč nezabije, o nenáročnosti ani nemluvím
To jediné tě šlechtí, protože viditelně vaříš z vody. Kvůli třem funkcím se při každém přístupu na stránku bude znovu stahovat a prohánět interpretem celý jQuery framework? To už to radši napsat "neelegantně":

window.setTimeout(function() {
  element.style.display = "none";
}, 5000);
joe
Profil
Witiko:
Na jednu stranu máš pravdu a souhlasím s tebou, dřív jsem to viděl stejně. Ale když ono to častokrát nekončí jen tímhle, to si člověk pak vymyslí další věci a než je sám psát nebo hledat, je efektivní na to použít jQuery nebo jiný framework. V dnešní době je to opravdu jedno, kdy jsou aplikace plné AJAXu, tak už tě vidím, jak bys třeba takové věci psal bez nějakého FW, dalo by se, ale trvalo by to déle, o dost déle.
Co když by pak chtěl přidat nějaký efekt? Typu fadeOut/In? Namísto jednoho slova (fce) bude vymýšlet jak to udělat a v případě hoveru to bude ještě těžší vymyslet tak, aby to fungovalo tak, jak člověk chce.
Witiko
Profil
joe:
Bavíme se o konkrétním případu. V tomto konkrétním případě popisovaném Schmutzka je použití jQuery nežádoucí kvůli poměru kód:framework.

Co když by pak chtěl přidat nějaký efekt? Typu fadeOut/In?
http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=119049#11

Javascript není raketové inženýrství. Pokud se ho někdo učit nechce, musí počítat se sníženou efektivitou jeho scriptu. Framework je slovo, jímž se poslední dobou hodně plýtvá a jež je mírně přeceňované. Co je framework? Vrstva pro abstraktizaci přístupu k DOM a sada funkcí, které se buď

1) Snaží uspokojit všechny
2) Snaží pokrýt specifické potřeby

Skutečně se nejedná o nic zas tak úžasně zázračného a troufám si tvrdit, že framework ke svému obrazu si dokáže sepsat každý průměrně zručný kodér. Věřím, že každý, kdo kdy pracoval v javascriptu, se naučil řadit určité rutiny a algorytmy do univerzálních funkcí, které poté mohl používat v dalších projektech. Ty mohou tvořit základ jeho frameworku.
Chamurappi
Profil
Reaguji na joa:
už tě vidím, jak bys třeba takové věci psal bez nějakého FW, dalo by se, ale trvalo by to déle, o dost déle
Všechno důležité už mám dávno napsané (a Witiko předpokládám také). Proč bych to měl vymýšlet znovu?
Jediná výhoda frameworku spočívá v týmové spolupráci — mohl bych spolupracovat s packaly, kteří neumějí používat správně var, na neefektivně napsaných trivialitách. Na triviality ovšem týmová spolupráce není nutná a složitější projekty už vyžadují nějaké opravdové znalosti JavaScriptu — a ty složitější projekty prakticky vždy vespod nějaký základní framework mají, ovšem není tak podstatný (nikdo se nerozplývá blahem nad efekty, o ty už nejde) a často je vyráběný současně s projektem spíš než převzatý.

Co když by pak chtěl přidat nějaký efekt? Typu fadeOut/In?
Už mnoho let na to existují hotové a snadno dohledatelné funkce. V čem je problém? Tyhle efekty nevznikly s jQuery.
joe
Profil
Chamurappi:
Všechno důležité už mám dávno napsané
To tě chválím, ale proč znovu vynalézat kolo. Není důvod psát něco, co je již volně dostupné a lze to použít (zdarma). Uznej, že je to jen ztrátou času.

Tyhle efekty nevznikly s jQuery.
Vím o tom, podobné efekty jsem si dřív taky psal, ale zbytečně.

Jinak bych řekl, že dnešní projekty často využívají fw a je jedno, jestli zvolí nejpoužívanější jQuery nebo jiný. Stačí se podívat např. do kódu stránky stream.cz (vida, i tým ze Seznamu používá jQuery, "proč to sakra dělají...")

Witiko:
Ano, na takto jednoduchý případ je skutečně nevhodné použít fw, když je to otázka pár řádků, jen jsem tím myslel, že ne vždy to končí takovým kódem a častokrát se stavá, že se přidává další efekt, funkce, ...
Chamurappi
Profil
Reaguji na joa:
Není důvod psát něco, co je již volně dostupné a lze to použít (zdarma).
Autoři frameworků tohle nepochopili :-)

(vida, i tým ze Seznamu používá jQuery, "proč to sakra dělají…")
Hm. Že by je omrzel jejich vlastní JAK? To asi ne. Spíš bych řekl, že Stream.cz není vyvíjen týmem Seznamu.
ah01
Profil
Witiko:
Kvůli třem funkcím se při každém přístupu na stránku bude znovu stahovat a prohánět interpretem celý jQuery framework?
Je to statický soubor. Proč by se měl při každém přístupu stahovat znovu? Stáhne se jednou a pak zůstane v cachi. Navíc, pokud použije veřejné CND, tak už tam třeba dávno je. jQuery nemá ani 30kB, i jen obrázky na stránce budou nejspíš větší ;)

prohánět interpretem celý jQuery framework
Máš po ruce nějaká čísla? Kolik je to procent z celkového času než se načte a vykreslí celá stránka?

Když zkusím jednoduchý pokus. Web jquery.com se mi zobrazí za 1,26 s (podle firebugu). Požadavek na jQuery na googlí server trval 77 ms (vrátilo se 304 Not Modified), paralelně s tím se stahoval i vlastní skript té stránky a to trvalo déle, takže kdyby tam jQuery nebylo, nic se z tohoto času neušetří. Veškerý JS na stránce trval 33 ms. To je 3% celkového času! I kdyby zpracování jQuery zabralo celý tento čas, stránka se načte místo za 1,26 s už za 1.23 s. Opravdu ti to přijde jako nepřekonatelné zpoždění.

Jistě, ty čísla budou u každého jiná, ale jde o to, aby si autor stránky zjistil, jak to bude vypadat u cílové skupiny stránky. Stejně si ale myslím, že drtivá většina návštěvníků rozdíl ani nepostřehne.

framework ke svému obrazu si dokáže sepsat každý průměrně zručný kodér
Jistě, dokáže, ale proč by to dělal? – http://zdrojak.root.cz/clanky/proc-javascriptovy-framework/
A otázkou také je, jak ten „obraz“ bude vypadat.

Věřím, že každý, kdo kdy pracoval v javascriptu, se naučil řadit určité rutiny a algorytmy do univerzálních funkcí, které poté mohl používat v dalších projektech. Ty mohou tvořit základ jeho frameworku.
A taky vaříš, že takový domácí framework, bude srovnatelný nebo dokonce lepší, než framework na kterém intenzivně pracují desítky vývojářů a který používají miliony lidí po celém světě. Jestli jo, tak jsi hodně velký optimista :)
ShiraNai7
Profil
Witiko:
To jediné tě šlechtí, protože viditelně vaříš z vody. Kvůli třem funkcím se při každém přístupu na stránku bude znovu stahovat a prohánět interpretem celý jQuery framework? To už to radši napsat "neelegantně":

Já vařím z vody a ty viditelně ani nevíš že existuje nějaká cache.
Witiko
Profil
ShiraNai7:
Rozhodně ne každý prohlížeč kešuje scripty.
joe
Profil
I pro mobilní aplikace tady je jQuery Mobile.

Witiko:
Rozhodně ne každý prohlížeč kešuje scripty.

Nevím ani o jednom prohlížeči, který by si neukládal JS skripty, můžeš napsat, které to jsou?
Chamurappi
Profil
Reaguji na joa:
I pro mobilní aplikace tady je jQuery Mobile.
To je spíš mobilní alternativa k jQueryUI (které je účinnou brzdou i na desktopu) postavená na klasickém jQuery.
Na běžném mobilním webu stačí 30 kB skriptů k tomu, aby uživatelé začali prskat (mají-li při ruce prskací formulář), to už mám v praxi vyzkoušené.

Nevím ani o jednom prohlížeči, který by si neukládal JS skripty, můžeš napsat, které to jsou?
V privátním režimu všechny. Keše bývají vypnuté i v internetových kavárnách a jiných veřejně přístupných brouzdalištích.


Reaguji na ah01:
vaříš, že takový domácí framework, bude srovnatelný nebo dokonce lepší, než framework na kterém intenzivně pracují desítky vývojářů
Můžu z jejich poznatků a práce těžit i jinak, než že je překopíruji.
Není nutné podchytit všechny stavy a ošetřit všechny anomálie, které mohou nastat. Mnoha z nim se jde vyhnout rozumným návrhem HTML/CSS. Daň za universálnost a za strmou křivku učení je možná nízká, ale pořád je to daň — ve formě zanedbatelného tříprocentního zpoždění, zkresleného vnímání jazyka a určitého druhu závislosti na cizí práci a cizích slibech o interoperabilitě.

Jestli jo, tak jsi hodně velký optimista :)
Když si pročítám dva roky starou výživnou debatu o tom, jakých hloupostí se ty desítky vývojářů dopouštěly v době třetích narozenin jQuery, a porovnávám to s hloupostmi, kterých jsem se tenkrát dopouštěl sám, jsem spíš optimista. (Nikoliv hodně velký optimista, jen optimista.)

a který používají miliony lidí po celém světě
Nekritická důvěra milionů lidí je škodlivá. Knihovna již nemusí splňovat slibované kvalitativní předpoklady — pokud třeba začne selhávat v novém prohlížeči, bude mít průšvih spíš prohlížeč. Jakou odpovědnost dnes mají vývojáři čehokoliv, co souvisí s jQuery? Zajímá ty miliony uživatelů efektivita kódu?
ShiraNai7
Profil
Myslím, že přispěvkem od Schmutzka měla diskuse tady skončit, ne se zvrhnout v debatu o frameworcích, jejich náročnosti a kvalitě.
Chamurappi
Profil
Reaguji na ShiraNaiho7:
Však on také Schmutzka hned po svém příspěvku zamknul :-)
ShiraNai7
Profil
Chamurappi:
Tak jaktože tu šlo ještě psát? :)
Timy
Profil
ah01:
jQuery nemá ani 30kB, i jen obrázky na stránce budou nejspíš větší ;)
Standardní jQuery z jQuery.com má velikost přes 80 KB.
_es
Profil
Timy:
Standardní jQuery z jQuery.com má velikost přes 80 KB.
Asi myslel „minifikovanú“ verziu".

ShiraNai7:
ty viditelně ani nevíš že existuje nějaká cache.
Ak sa aj skripty natiahnu z cache, tak sa ten skript musí vždy opakovane zinterpretovať alebo skompilovať.
Pri menej výkonnom počítači, alebo pri behu na baterku, to môže byť problém.
Timy
Profil
_es:
Asi myslel ‚minifikovanú‘ verziu".
Já taky. Má konkrétně 82 KB.
_es
Profil
Timy:
Já taky. Má konkrétně 82 KB.
Po kompresii gzip to je 27 106 bajtov, súbor http://code.jquery.com/jquery-1.4.4.min.js
Timy
Profil
_es:
Ano, po kompresi ano.

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:

0