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

Zelený je lopuch,
fotbal to je hra...

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: otzrhnh
[ 2040 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 21.11.2006 10:23  1029
A nesnazi se nahodou melkor_unlimited [1022] vyjadrit to, ze po nainstalovani tech scriptu mu ta zkratka prave prestala pro vyhledavani fungovat?
al3x 21.11.2006 01:58  1028
*sigh*
case Case Greatest comedy of the generation of - blah blah ever to do a thing on a thing. 21.11.2006 00:56  1027
Nojo, to je pravda, v děsuplných konzolových aplikacích se tak vlastně vyhledává taky ;)
al3x 21.11.2006 00:30  1026
'/' pro rychle hledani uz je hodne stara konvence i mimo web.
case Case Greatest comedy of the generation of - blah blah ever to do a thing on a thing. 21.11.2006 00:25  1025
No rozhodně je klávesa, pod kterou se rychlé hledání objevilo v Opeře.
al3x 21.11.2006 00:18  1024
Mam za to, ze '/' je pro rychly hledani ve FF uz dlouho..
misa Misa Záviďte mi - máte proč :o) 20.11.2006 20:16  1023
melkor_unlimited [1022]: nejspíš autoři FF či nějaké extension, dělá to i bez jakýchkoli skriptů ;-)
melkor_unlimited melkor_unlimited Ltd. 20.11.2006 19:41  1022
Divné chováníAktivoval jsem skritpy:
klub reply (by Kdokoliv)
formating panel (by Peca)

a dočkal se poněkud nečekaného chování FF. Rád bych věděl, kdo (nebo co) nese odpovědnost za odchytávání znaku "/" jako klávesové skratky pro vyhledávání.
ocko 7.11.2006 21:24  1021
Kdokoliv [1020]: Koukam, tobe se hnad tak cas neuvolni, co? ;-)
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 7.11.2006 19:58  1020
Hm, tak zda se, ze jsem mel jenom spatne tu podminku, co se tam testuje, a proto se mi to zacalo aplikovat az pri loadnuti, takze prece jenom to je tak, ze user script je v Opere spusten jeste behem nacitani stranky, tudiz je tam to kolecko potreba. Ale jeden by neveril, jak se neco takovehleho testuje u rychleho pripojeni, bejt doma, tak je to o jinym. :-)
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 7.11.2006 19:52  1019
Tak ne, vsechno je jinak, asi tam mam spis neco blbe, musim to jeste lip prozkoumat.
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 7.11.2006 19:47  1018
Hm, tak to ted sam zkousim a chova se to trochu jinak, nez jsem puvodne cekal (ten prototyp jsem psal offline, takze jsem to nemel v podobe user scriptu jak vyzkouset), zda se, ze tomu scriptu neni predano rizeni driv, nez je natazena cela stranka (ale snad driv, nez jsou dotahnuty vsechny zavisle objekty jako obrazky a podobne). Coz me trochu zarazi, protoze mam dojem, ze kdyz jsem si s user scripty hral v Opere poprve, tak se zacaly aplikovat prakticky ihned, ale nejspis si to jenom blbe pamatuju, protoze kdyz tak nad tim ted uvazuju, tak by to byla pekna pitomost, aby script byl spusten treba jeste driv, nez se vubec z toho dokumentu neco nacte. Tudiz jak se tak zda, celou tu saskarnu s timeoutem a evalama bych si moh odpustit a proste se jenom spolehnout na to, ze ten dokument mam v tu chvili uz kompletne k dispozici, cimz se vse nemalo usnadni.

To me privadi k dalsi myslence - totiz, ze neni uplne dobre mit stejne pojmenovane user scripty pro Operu a pro GreaseMonkey, ponevadz ty, jejichz nazev odpovida konvencim GM, jsou v Opere provadeny az tehdy, kdy je opravdu nactena cela stranka (vcetne vsech objektu), zatimco kdyz se to pojmenuje bez .user, tak se to chova uplne stejne, jako ve Firefoxu. Hm, to je malicko nedomyslene, pokud to tak fakt je.
bouchi Bouchi Dračí doupě II - Legenda je zpět 3.11.2006 18:01  1017
Kod jako takovy jsem nezkoumal ale myslenku jsem patrne pochopil. ;-)
kdokoliv Kdokoliv Nevidím důvod dělat cokoliv bezdůvodně. - http://kkl2401.wz.cz 3.11.2006 17:52  1016
Kdyby mi nekdo potvrdil, ze to pochopil, bylo by to fajn. :-)
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.

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

(c) 2001-2011 Lopuch.cz   
Kontakt