2008-06-15 22:28 napsal Lukáš Havrlant
Docela jsem si oblíbil český web jdem.cz provozovaný Arthurem Dentem. Jen mě tak nějak vždycky na Opeře štvalo, že to pro neexistuje nějaké pohodlné rozšíření. Jakožto uživatel mám k dispozici pouze obecný bookmarklet, kterýžto má ale jednu zásadní vadu: po kliknutí se javascriptem otevře okénko, z kterého musím ručně zkopírovat odkaz a následně toto okno ještě zavřít. To mi přišlo takové neohrabané, respektive zdlouhavé. O něco lepší je rozšíření pro Firefox, ale tam mě zase nebavilo klikat na nástroje → jdem.cz → odkaz z aktuální adresy. Hmm, věčně nespokojený Lukáš :-).
A z oné mé nespokojenosti vzešel nápad udělat si vlastní
jednoduché rozšíření pro jdem.cz; když už má jdem.cz přímo napsané API, tak proč ho
nevyužít. Mimochodem za to API opravdu díky, respektive hlavně díky za
ukázkový kód v PHP, předtím jsem tu adresu lovil přes
file_get_contents, ale to nesežralo identifikátor za kanálkem #.
No jo, já a PHP.
Tak tedy představuji další bookmarklet pro jdem.cz:
A teď v čem je to jiné – po kliknutí na bookmarklet se otevře stránka, kde se zavolá jdem.cz, které zkrátí adresu. Následně se tato adresa přes flash (spolehlivé javascript only řešení jsem nenašel) přímo nakopíruje do schránky a okno se navíc ještě zavře. Zde jsem ještě musel dát krátkou prodlevu, protože když jsem okno zavřel hned, prohlížeče s tím měly problémy. Čert ví proč. Bookmarklet je stejný jako originál, jen jsem změnil adresu. Možná by stálo za to to okénko ještě zmenšit. Funguje mi to v Opeře 9.50 i ve FF3; jinde netestováno.
A aby toho nebylo málo, napsal jsem si ještě uživatelský skript, který toto okénko zavolá při stisknutí klávesové zkratky. Zde je:
onkeydown=function()
{
kldown(event.keyCode);
}
onkeyup=function()
{
klup(event.keyCode);
}
var klshift=0;
var klalt=0;
var kla=0;
function kldown(k) {
if(k==16) klshift=1;
else if(k==18) klalt=1;
else if(k==88) kla=1;
if(klshift && klalt && kla) {
// alert('Stisknuta kombinace ALT+SHIFT+X');
x99=window.open('http://nastroje.havrlant.net/jdem/?q='+encodeURIComponent(document.location.href),'Jdem.cz','modal=1,status=0,scrollbars=1,toolbar=0,resizable=1,height=100,width=200,left='+(screen.width-785)/2+',top='+(screen.height-550)/2);
setTimeout('x99.focus()',1000);
klshift=0;
klalt=0;
kla=0;
}
}
function klup(k) {
if(k==16) klshift=0;
else if(k==18) klalt=0;
else if(k==88) kla=0;
}
Po stisknutí shift + alt + x se zobrazí stejné okno a do
schránky se uloží zkrácená verze URL, na které zrovna jste. Původně
psáno pro Operu, tu opici pro Javascript na Firefoxu nemám, takže jsem to
nezkoušel. Pokud někdo chce jinou klávesovou kombinaci, nechť si skript
přepíše, není to zase tak těžké.
Anebo editujte přímo soubor standard_keyboard.ini v profilu Opery, což je hafo jednodušší :-). Viz komentáře.
Líbí? Užívejte si to! Nelíbí? Hmm. :-)
Ještě jsem zapomněl poděkovat Měsíčkovi za pomoc při hledání spolehlivého řešení pro kopírování do schránky a DJ Mikymu, který mi nechtě pomohl s klávesovou zkratkou v Javascriptu.
Dobrá práce! Přesně tohle mi na bookmarkletu taky vadilo :-)
Jinak v Opeře je možné klávesovou zkratku nadefinovat přímo v Nástroje / Nastavení / Pokročilé volby / Myš a klávesnice. Ale přiznám se, že tady to moc neumím, takže si spíš otevřu příslušný INI soubor (tuším keyboard.ini) a přidám do sekce [Application] řádek:
x shift alt="Go to page, "{text bookmarletu}""
Ad FF extension: „nástroje → jdem.cz → odkaz z aktuální adresy“ – Mně to funguje na pravé tlačítko myši, schováno pod „Vytvořit krátkou adresu pro tuto stránku“.
Jinak – díky a dotaz: Mohu to publikovat přímo na Jdem? Samosebou s veškerými díky a odkazy na autora?
eLKa: V opera:config dej vyhledat „user javascript“. Zatrhni co se dá a nastav si složku, ze které se budou číst javascripty. Do této složky pak nahraj požadovaný javascriptový soubor.
Jednodušší ale je najít ten ini soubor se zkratkami (je někde v profilu Opery, ve složce „keyboards“ myslím) a přidat tam řádek:
x alt="Go to page, "{text bookmarletu}""
Po stisknutí alt+x se spustí bookmarlet. Zkratku si samozřejmě můžeš nastavit jak chceš.
Komentáře jsou uzavřeny