Autor Zpráva
Darker
Profil
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
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 forem 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
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
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.

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:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0