Autor | Zpráva | ||
---|---|---|---|
Darker Profil |
#1 · Zasláno: 24. 5. 2010, 20:16:15
Pokud chci udělat nějaký bookmarklet pro firefox, zjišťuji velmi záhy, že to není žádná legrace.
Pokud totiž ve skriptu dojde k nastavení nějaké proměnné nebo hodnoty, firefox její novou hodnotu vypíše, a to tak že jí přemaže původní stránku. Smutné, pokud se chci například zbavit reklamy, která nejde bloknout pomocí adblocku. Když udělám skript: document.getElementById("reklama").style.display="none" Objekt zmizí ale v blesku ho nahradí bílá plocha která mi hlásí :"none" Samosebou, není to úplný konec. Funguje toto:<b>for(document.getElementById("reklama").style.display="none";1==2;1+1) {;}</b> To mi firefox sežere. Legrace ale končí, když chci najít všechny reklamy podle className a zmizet je. Takový skript pak vypadá nějak takto (můj odreklamovávač pro fakesbook) : javascript:for(i=0;i<document.getElementsByClassName("fbEmu%20fbEmuVertical%20fbEmuLegacy").length;i++)%20{for(document.getElementsByClassName("fbEmu%20fbEmuVertical%20fbEmuLegacy")[i].style.display="none";document.getElementsByClassName("fbEmu%20fbEmuVertical%20fbEmuLegacy")[i].style.display!="none";document.getElementsByClassName("fbEmu%20fbEmuVertical%20fbEmuLegacy")[i].style.display="none")%20{;}};for(document.getElementById("adcolumn_advertise").style.display="none";document.getElementById("adcolumn_advertise").style.display!="none";document.getElementById("adcolumn_advertise").style.display="none")%20{;}; Tady už to začíná být vražedné. Tak. Otázka je jednoduchá. Víte někdo prosím o nějakém méně šíleném a vražedném řešení? Jestli ano díky. PS.:Jak se naskriptuje vhození proměnné tam, kde uživatel naposled klikl do pole? |
||
Chamurappi Profil |
#2 · Zasláno: 25. 5. 2010, 13:47:35 · Upravil/a: Chamurappi
Reaguji na Darkera:
„Objekt zmizí ale v blesku ho nahradí bílá plocha která mi hlásí :"none"“ To je normální, tak se snad chovají všechny prohlížeče. Adresní řádek jde použít jako javascriptová konzole a plocha stránky jako její výstup. Běžně se tomu nežádoucímu jevu brání tak, že se za poslední příkaz dá void(0); , nebo že je návratová hodnota posledního příkazu undefined (což vrací třeba alert — proto jde bezpečně alertovat).
Ten tvůj trik s for em je vynalézavý :-)
„PS.:Jak se naskriptuje vhození proměnné tam, kde uživatel naposled klikl do pole?“ Asi nerozumím. Myslíš jako textové pole? <input> ? Jaké vhození? Do value ? Kdy „naposled“? Jestli naposled před zavoláním bookmarkletu, tak to asi zjistit nejde.
|
||
Darker Profil |
#3 · Zasláno: 26. 5. 2010, 13:55:00
Dík za odpověď.
Už produkuju bookmarklety v nezměrném množství, užívajíce této volnosti. Co se týče toho pole příklad vidíš například tady na fórku. Když klikneš na B, tag skočí tam, kam jsi zanechal posledně blikat kursor. A když už jsme u toho, zajímalo by mě též jak javascript přijde na to, kterou část textu jsem označil. Hodila by se mi totiž opačná funkce-označení části textu. (viz zde, otevři okýnko a klikni na úpravy) Pár výtvorů, jednoduchých ale asi daleko užitečnějších, než ty složité, se kterými se chci pochlubit, ač to nejsou žádné objevy ;): [url=javascript:timedbomb=prompt("Zadej%20skript","");void(eval(timedbomb))]Jakykoliv skript se spusti[/url]; [url=javascript:void(c=0)]Zruseni cekani na rapid sharu[/url] [url=javascript:n=prompt("Zadej%20id%20objektu","");void(document.getElementById(n).style.display="none")]Skryj cokoliv[/url] [url=javascript:n=prompt("Zadej%20id%20objektu","");void(document.getElementById(n).style.display="block")]Zobraz cokoliv[/url] [url=javascript:deployedmissile=prompt("zadej%20html%20k%C3%B3d","");void(document.getElementsByTagName("body")[0].innerHTML=document.getElementsByTagName("body")[0].innerHTML+deployedmissile)]Pridej html kod na konec stranky[/url] A závěrem bych se chtěl zeptat, zda netušíš, jak definovat novou funkci do stránky. To bych hodně potřeboval. To bys si pak se stránkami mohl dělat opravdu téměř cokoliv bych chtěl. |
||
Witiko Profil |
#4 · Zasláno: 26. 5. 2010, 23:11:29 · Upravil/a: Witiko
Darker:
„A závěrem bych se chtěl zeptat, zda netušíš, jak definovat novou funkci do stránky.“ var název = function() { ... } „A když už jsme u toho, zajímalo by mě též jak javascript přijde na to, kterou část textu jsem označil.“ ]http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=110668 Oboje je možné najít během minuty v googlu, nebo nahlédnutím do příručky základní syntaxe javascriptu. *rolls all three eyes* Spousta uvedených bookmarkletů je spíš zpomalení, než zrychlení práce, doporučuji instalaci Firebug addinu do Firefoxu. |
||
Časová prodleva: 14 let
|
0