Autor Zpráva
jogurt
Profil
Chtěl bych pro fotogalerii možnost přecházet na další fotku (další stránku) šipkami na klávesnici. Jak na to?
Na iDnesu to funguje, bohužel jsem to v kódu nenašel.
Galerie iDnesu třeba: http://mobil.idnes.cz/foto.asp?r=mob_sonyericsson&c=A071023_000352_mob _sonyericsson_vok.
Chamurappi
Profil
Reaguji na jogurta:
Něco dost podobného jsem zrovna nedávno programoval. Když to trochu zjednoduším:
document.documentElement.onkeydown = function(e)
{
  var event = e || window.event;
  var target = event.target || event.srcElement;
  if(target.tagName == "INPUT" || target.tagName == "TEXTAREA") return true;
  var akce = {
    37: function() { … akce při šipce doleva … },
    38: function() { … akce při šipce nahoru … },
    39: function() { … akce při šipce doprava … },
    40: function() { … akce při šipce dolu … }
  };
  var a = akce[event.keyCode];
  return a ? a() : true;
};
bohužel jsem to v kódu nenašel
Není divu, mají ho zapakovaný.

Můžeš se také podívat na losův skript na ovládání víceúrovňového menu klávesnicí.
jogurt
Profil
Diky, Chamurappi,
rozumim tomu, az na tu definici event a target - prvni dva radky funkce. Proc je moznost ziskat udalost z parametru nebo z window.event?
Chamurappi
Profil
Reaguji na jogurta:
Explorer a Mozilla používají jiný postup předávání informací o události. V Exploreru vzniká globální objekt window.event, v Mozille se předává obdobný objekt jako argument funkci zpracovávající událost. V prvním řádku si tedy sjednocuji tuto nekompatibilitu — vezmu si do vlastní proměnné buď argument, nebo window.event, podle toho, co existuje.

Ve druhém řádku se snažím zjistit element, na kterém elementu ke vzniku události došlo. U Mozilly je ve vlastnosti target, u Exploreru v srcElement. Takže si opět vezmu to, co existuje.

V Opeře mimochodem funguje window.event i argument a srcElement i target, takže kdyby byla ta funkce psaná jen pro Explorer, nebo jen pro Mozillu, fungovala by i v Opeře.
jogurt
Profil
Aha, myslel jsem si to. Dik za kod a vysvetleni, funguje mi to.
J
Fisir
Profil
Používám tentýž skript, jako zde publikoval Chamurappi. Problém je v tom, že když se zmáčkne Ctrl (já totiž mám akce vázané na písmena) provede se i ona akce. A to já nechci. Zkoušel jsem řádek 13 v [#2] nahradit tímto:
if(event.keyCode != 17){
  return a ? a() : true;
};
Ale to nefunguje. Nevíte, jak to zprovoznit (aby se akce vykonala jen tehdy, když nebude stisknuto Ctrl)?
_es
Profil
Fisir:
aby se akce vykonala jen tehdy, když nebude stisknuto Ctrl
Vyhľadávače nepoznáš?
Fisir
Profil
Reaguji na _es [#7]:
Vyhľadávače nepoznáš?
Ano. Sestavil jsem skript, který mi vypsal, že Ctrl má ASCII kód 17. A ve vyhledávání není to, co já potřebuji.
Výsledky hledání „detekce stisknutého ctrl javascript“ v Googlu:
 1 • JavaScript - Události
 2 • Diskuse: Navigace šipkami na klávesnici
 3 • Slabikář JavaScriptu - ostatní události | Interval.cz
 4 • Výuka JavaScriptu – 13. - Živě.cz
 5 • PSPad - free unicode vývojářský editor určený pro HTML, PHP ...
 6 • Download - Microsoft
 7 • popis programu - Javascript games
 8 • Události, vlastní procedury a typy, převody textu a čísel

Moderátor Chamurappi: Nepoužívej nesmyslně nadpisy.
Marek88
Profil
Fisir:
Já jsem něco našel: http://stackoverflow.com/questions/1652210/can-i-intercept-control-a-keypresses-on-ie
Snad ti to pomůže. Mám na mysli tu odpověď. Nemusíš používat jQuery, jde hlavně o ten princip.

↓ EDIT: V odkázaném tématu se tazatel ptá, proč mu v IE nefunguje řešení s event.ctrlKey. Myslel jsem si, že je chyba v tom event.ctrlKey a že to starší IE třeba neumí. Chyba je ale zřejmě v jeho práci s event...

Omlouvám se za nedorozumění.
Chamurappi
Profil
Na toto pěkné vlákno docela často odkazujeme. Pokud sem napíšete příliš mnoho blbostí, tak vás smažu.

Reaguji na _es:
Nekonstruktivní.

Reaguji na Fisira:
Hm, svkěle, ještě sem narvi nadpis s kotvou #hledani, na to určitě budou chtít všichni odkazovat…

Reaguji na Marka88:
Fuj, to je krkolomné. Vždyť stačí prostá podmínka s event.ctrlKey
Fisir
Profil
Reaguji na Chamurappiho [#10]:
event.ctrlKey
Děkuji! Funguje!
_es
Profil
Chamurappi:
Reaguji na _es:
Nekonstruktivní.
Vzhľadom na uvedený údaj „Časová prodleva: 4 roky“ a na to, že Fisir:> „event.ctrlKey“Děkuji! Funguje! sa dalo nájsť za pár sekúnd aj vyhľadávačom, aj na tomto fóre, sa mi to nezdá ako nekonštruktívne.

Fisir:
Výsledky hledání ‚detekce stisknutého ctrl javascript‘ v Googlu:
Stačí len vhodne formulovať dotaz, napríklad na primitívne ctrl javascript.

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: