Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Když diskuse,
tak s Lopuchem

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Lopuší user scripty [ŽP: neomezená] (kategorie Lopuch) moderují Bouchi, Kdokoliv.
Archiv
Domovská stránka aktualizována 28.7.2019 17:46

Wiki, která je snad dostatečně udržovaná a se kterou furt někdo v klubu otravoval :-) – http://moltools.sourceforge.net/lopuch/
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: zzbkifu
[ 2040 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 3.11.2006 17:52  1015
Tak mel bych tu zase jednu novinku, zatim spis takovy prototyp, kteremu jeste musim dat trochu ucelenejsi formu, ale kdyby si s tim chtel nekdo hrat, tak aspon myslenka.
Predesilam, ze pokud jde o user scripty, tak to bude fungovat jenom v Opere, GreaseMonkey to principialne neumi (mnohokrat se to v konferenci resilo, problem je v tom, ze to proste nejde napasovat na Gecko jako takove). Ale ta idea se da pouzit i v ramci normalnich javascriptu na nejakych vlastnich strankach, tam to bude fungovat vsude
Uz dlouho jsem premyslel, ze by bylo obcas vhodne moct provest nejakou javascriptovou iniciaci (zhruba) presne ve vhodny moment - obvykle se iniciuje, kdyz nastane load na dokumentu, jenze to na velkych dokumentech a/nebo pomalych linkach dlouho trva, navic to obvykle jeste "vylepsi" vsemozne toplisty a reklamni bannery, ktere jsou vecne pretizene, takze stranka uz je skoro cela nactena, lec udalost load ne a ne nastat. Tudiz jsem napsal funkci, ktera bere dva parametry - prvnim je podminka, ktera se nad dokumentem testuje, druhym je kod, ktery se vykona. Funguje to tak, ze dokud nenastane zminovana podminka, tak se tahle funkce s urcitou prodlevou rekurzivne vola (ta prodleva je tam proto, aby zase procesor moh delat i neco jinyho), a az podminka nastane, zavola se pozadovany kod. Priklad - budu chtit javascriptem cosi zmenit na nejakem divu presne v momente, kdy uz ten div vubec bude existovat (prohlizec stahne dostatek stranky na to, aby si ten div uz zaradil do vytvareneho stromu dokumentu) - tak proste (rekneme, ze ten div ma nejake id, podle ktereho ho najdu) tak dlouho testuju, zda uz ten div existuje, dokud to nenastane, a az ano, provedu modifikaci. Tudiz to nastane v ten v podstate nejdrivejsi okamzik, kdy je mozne, aby to nastalo. Samozrejme je dobre davat pozor na to, abychom neskoncili v nekonecne rekurzi, takze je typicky na miste pridat si omezeni, ze nastane-li nacteni celeho dokumentu a pritom jeste furt nenastala "nase" podminka, tak cely mechanismus skonci.
Zminovana funkce vypada asi takto (plus nejaky dalsi nutny obsluzny kod):
function initWithCondition(condition, whatToDo) {
    if (window.loaded || !eval(condition)) {
        eval(whatToDo);
        return;
    }
    if (window.initWithConditionInterval != undefined) setTimeout(initWithCondition, window.initWithConditionInterval, condition, whatToDo);
}
window.addEventListener("load", function() { window.loaded = true; }, false);
window.initWithConditionInterval = 100;

Nevim takhle zpameti, jestli se da nejak sikovne zjistit, jestli uz byl document nacten (dost mozna jo), tak tady pro jistotu odchytavam prave udalost load a pokud nastane, tak si na window ulozim, ze tomu tak bylo (predposledni radek). Posledni radek nastavuje prodlevu na 100 ms (lze upravit dle libosti). Funkce samotna pak pokud byl dokument nacten nebo prestala platit podminka vykona urceny kod a skonci (jinak sama sebe zavola s urcenou prodlevou). K tomu opet nejake podminky - mozna by bylo nekdy spise vhodnejsi, kdyz nastal load, skoncit bez vykonani urceneho kodu, to uz si musite sami rozmyslet. Stejne tak se mozna nekomu hure bude zadavat podminka v tomto tvaru a lepe by se zadavala negovana (znamy problem do while versus repeat until), uprava je opet evidentni. Navic by asi stalo za to volani evalu obalit nejakym try-catchem a vubec to udelat trochu robustnejsi vuci chybam, to nekdy v pozdejsich verzich.
Konkretni ukazka pouziti zavolani teto funkce:
initWithCondition("document.documentElement.id == \"\"", "setHTMLId()");

Co to udela - otestuje, testuje, jak je na tom korenovy element dokumentu s atributem id. Dokud je id prazdne, bude volat funkci setHTMLId().
Cimz se malym oslim mustkem dostavam k tomu, ceho jsem tim chtel dosahnout predevsim (byt je mechanismus, jak vidno, znacne obecnejsi). Funkce setHTMLId() totiz vypada takto:
function setHTMLId() {
    var html = document.documentElement;
    if (html == undefined) return;
    if (html.id == "") {
        var host = location.host;
        var hostSplitted = host.split(".");
        var id = "";
        for (i = 0; i < hostSplitted.length; i++) {
            if (i > 0) id += "-";
            id += hostSplitted[i];
        }
        html.id = id;
    }
}

Opet to neni moc testovano, ale funkce je pomerne trivialni - pokud element html ma nastaveno id, nedela to nic, pokud nema, vezme to domenu adresy (treba www.lopuch.cz), rozseka podle tecek a spoji pomlckama (kdyz ted nad tim premyslim, tak jsem to mozna mel psat trochu strizlivejsi a proste jenom v tom retezci zamenit tecky za pomlcky, ale to uz je ted jedno), cili vyrobi neco jako www-lopuch-cz a tohle to priradi atributu id.
Pokud z tohohle clovek vyrobi user script a necha ho aplikovat na uplne vsechny weby, zajisti tim, ze kazdy web, ktery navstivi, bude mit rozumne nastaveno id u elementu html.
No a pokud jeste furt neni jasne, kam mirim, tak timto lze delat velmi ucelna a cilena uzivatelska CSS - proste upravovat si CSS jednotlivych webu (treba kdyz pouzivaji nevhodne fonty/barvy/cokoliv). Jak toho pak docilit je uz zrejme.
Posledni poznamka na zaver objasnujici, proc si s tim davat tolik prace a nenasetovat to id proste opravdu az tehdy, kdy nastane na strance load. Trochu uz jsem to zminil - ten muze nekdy nastat velmi pozde, treba az tehdy, kdy vlastne stranku zase clovek opousti, takze by se to CSS vubec nestihlo pouzit. Druhy duvod, proc je to az pri naloadovani nevhodne, je ten, ze je-li stranka velmi dlouha, procesor se pri loadu nemalo zapoti - vim, ze kdyz jsem takhle Lapiduchu prave menil font, tak se tim znacne zmenilo cele formatovani a u klubu s nactenou stovkou prispevkou klidne mohlo vterinu dve trvat, nez se to preformatovalo.
wolfi Wolfi Z oddělení 7F - s bílým náramkem... 3.11.2006 17:10  1014
Johny_G [1011]: Nejspíš to třetí, nečíst si mě prudící příspěvky a ignorovat je (což nejde, když je člověk vidí a umí číst rychle :)
bouchi Bouchi Dračí doupě II - Legenda je zpět 3.11.2006 17:03  1013
Johny_G [1011]: Opomijis moznost
3) Mam klid, protoze leckdy ani nevim, ze ignorovany neco psal.
case Case Greatest comedy of the generation of - blah blah ever to do a thing on a thing. 3.11.2006 16:49  1012
Ideální je oba ty způsoby kombinovat.
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 3.11.2006 16:44  1011
Wolfi [1010]: Ignorovátko se dá použít dvojím způsobem:
1) Budu po každém postu ignorovaného machrovat, že jsem si jeho post nepřečetl, protože ho nevidím
2) Přečtení si prodloužím o jedno kliknutí, protože jsem zvědavý, co ignorovaný psal

Jaké využití máš v plánu? ;-)
wolfi Wolfi Z oddělení 7F - s bílým náramkem... 3.11.2006 16:28  1010
Šlo by udělat scriptové ignorovátko? :) Na Lopuchu sice je, ale vypadá to, že pro Lap se ještě nějakou dobu neplánuje... a občas by se mi tam hodilo :)
misa Misa Záviďte mi - máte proč :o) 3.11.2006 16:12  1009
Jarmom [1008]: símtě, kdo by to používal v nastavení klubu na Lapu, tady je Lopuch :-)
jarmom Jarmom Egoistický elitář™ - Make your own kind of music! 3.11.2006 16:02  1008
poznámka k formatingpanel.sj od Misa (http://molhanec.net/lopuch/?n=Main.Misa)(nevím, kdo to je, tak to píšu sem)
v nastavení, pro které kluby ten skript platí, je chyba.
má tam být
http://*lapiduch.cz/nastklub.php*
huh huh 3.11.2006 14:38  1007
Kdokoliv [1005]: wiki je samozrejme volne otevrene, registraci nevyzaduje, na pokusy ma piskoviste ☺
johny_g Johny_G - Relaxační terapie pro lopušáky ZDARMA! 3.11.2006 14:35  1006
Kdokoliv [1005]: Jde jen o to, dát do záhlaví jediný link, nic víc :-).

http://molhanec.net/lopuch/?n=Main.HomePage
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 3.11.2006 14:34  1005
huh [1004]: Coz ma jednu jedinou nevyhodu, a to tu, ze bych se musel naucit, jak se ovlada wiki. :-) Nedejboze se pro tuhle konkretni wiki registrovat, pokud je to nutne (to jsem zatim nezkoumal).
huh huh 3.11.2006 14:30  1004
Kdokoliv [989]: prave proto vzniklo wiki, aby v zahlavi byl POUZE link na wiki, kde si muzou sami autori udrzovat a pridavat odkazy, tudiz moderatori klubu se s tim nemusi patlat
ocko 3.11.2006 14:01  1003
Scalex [1002]: Ano, ano, ano! Hrozne moc! :-D
scalex Scalex 3.11.2006 13:52  1002
Jo panáček by chtěl klávesnicový doubleclick! 8^)
ocko 3.11.2006 13:44  1001
peca_007 [988]: Nene, zjednodusene receno: enter, enter = 2 radky, enterenter = odeslani zpravy! ;-)

[ 2040 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt