Autor Zpráva
quatzael
Profil
Mám tenhle kód a ten nějak nefunguje v Chromu a Firefoxu:

$('body').keypress(function(e){
if(e.which == 27){
// bla bla
}
}

IE a Opera je v pořádku.
Chamurappi
Profil
Reaguji na quatzaela:
Událost onkeypress je proslulá tím, že funguje všelijak (i když bych tedy čekal, že to bude naopak, než popisuješ).
Používej onkeydown, kód klávesy zjistíš z keyCode.
quatzael
Profil
Chamurappi:
Jenže tohle mi v Mozille taky nefunguje:
$('body').keydown(function(){
if(event.keyCode == 27){
// bla bla
}



Chamurappi:
A tohle taky ne, jestli jsi to měl na mysli:
document.getElementsByTagName('body').onkeydown(function(){
if(event.keyCode == 27){
// bla bla
}
1Pupik1989
Profil
Jestli ono to hlavně nebude tím, že getElementsByTagName vrací NodeList.
preca2
Profil *
quatzael:
Jenže tohle mi v Mozille taky nefunguje:
Neni to tim, že ti tam chybí parametr event?

A tohle taky ne, jestli jsi to měl na mysli:
Zkus document.getElementsByTagName('body')[0] nebo lépe document.body.
quatzael
Profil
1Pupik1989, preca2:
Tak udělal jsem to takhle, ale stejně to nefunguje:
document.getElementsByTagName('body')[0].onkeydown(function(event)
_es
Profil
quatzael [#6]:
...onkeydown=funkcia...
Okrem toho treba na napravenie nekompatibilít starších IE dať prvý príkaz do funkcie:
event = event || window.event;
joe
Profil
Použij událost keyup,

$(document).keyup(function(e) {

pak by s Esc neměl být problém.
_es
Profil
joe:
V ktorom prehliadači funguje udalosť onkeyup „lepšie“ než onkeydown?

quatzael:
V akej situácii odchytávaš udalosť? Východziu akciu prehliadača si zrušiť skúsil?
quatzael
Profil
_es:
V akej situácii odchytávaš udalosť? Východziu akciu prehliadača si zrušiť skúsil?
Já Ti opravdu nerozumím.. Prostě potřebuju, aby se spustila funkce po stisku klávesy Esc.
To je všechno..
Prostě tohle:
$('body').keydown(function(){
if(event.keyCode == 27){
// bla bla
}

Nevím co máš na mysli za situaci.. Jakou výchozí akci prohlížeče máš na mysli?


Chamurappi, 1Pupik1989, preca2, joe, _es:
Tohle vypadá, že funguje:

$(document).keydown(function(e) {
if(e.keyCode == 27){
// more stuff
}

Chyběl tam ten parametr v tý funkci..
_es
Profil
quatzael:
Prostě tohle:
„Proste“ tam vždy vyrobíš nejakú (inú) chybu, na ktorú si už bol upozornený. Argument funkcie máš kde? (Tak si na to stihol prísť aj sám, než som to dopísal.)

Jakou výchozí akci prohlížeče máš na mysli?
No, že v istých situáciách môže klávesa Esc niečo spraviť- celkom si tým istý nie som. Možno pri formulárových prvkoch a pod. Ako iné „špeciálne“ klávesy: šípky, enter, medzerník, F? klávesy, ...
joe
Profil
_es:
Reagoval jsem na keypress. Pro odchycení Esc je ale vhodnější onkeyup, protože stačí provést akci jen jednou.

quatzael:
Jak jsem psal, použij událost onkeyup, funguje "jako" onkeydown, jen s tím rozdílem, že se nevykoná tolikrát.

http://kod.djpw.cz/crdb-
_es
Profil
joe [#12]:
Vyzeralo to ako rada, že na napravenie „nefunkčnosti“ stačí onkeydown nahradiť za onkeyup. Nie je jasné, či chce quatzael zachytávať zatlačenie klávesy alebo až jej pustenie.
quatzael
Profil
joe:
Jak jsem psal, použij událost onkeyup, funguje "jako" onkeydown, jen s tím rozdílem, že se nevykoná tolikrát.
Kolikrát by se měla sama vykonat?
onkeydown se jako vykoná vícekrát??
onkeyup mi připadá hodně nepraktický pro situaci kde Esc zavírá dialogový okno (mnou osobně vytvořený - aby zase nevznikly nějaký nedorozumnění), chvíli trvá než klávesu pustíš a vypadá to pak, že počítač reaguje pomaleji, protože normálně je každej zvyklej, že se mu to ihned zavře..
_es
Profil
quatzael:
onkeydown se jako vykoná vícekrát??
V závislosti od prehliadača sa viackrát môžu „vykonať“ udalosti onkeypress aj onkeydown pri dlhšom držaní klávesy.
quatzael
Profil
_es:
No tak každopádně tohle potřebuju k schovávání a odstraňování elementů, takže vůbec nevadí když se něco schová/odstraní vícekrát..
joe
Profil
quatzael:
chvíli trvá než klávesu pustíš a vypadá to pak, že počítač reaguje pomaleji,
Dokud nepustíš tlačítko myši nad odkazem, taky se neotevře.
quatzael
Profil
joe:
Dokud nepustíš tlačítko myši nad odkazem, taky se neotevře.
Jo, ale to je chování, na který je každý zvyklý. U klávesy Esc tohle neplatí.
_es
Profil
joe:
Dokud nepustíš tlačítko myši nad odkazem, taky se neotevře.
Bez toho by nešli „drag & drop špeciality“ s odkazmi.
joe
Profil
quatzael:
U klávesy Esc tohle neplatí.
Nemyslím si a ani v Googlu si to nemyslí, zkus třeba na mapách kliknout na ikonku pro menu vedle tlačítka přihlášení a pak si vyzkoušet, jak funguje Esc.

Výhodu schování popupu na onkeyup vidím v tom, že si uživatel může ještě rozmyslet, kdy ho chce skrýt a skryje ho, až když klávesu opustí.

_es:
Bez toho by nešli ‚drag & drop špeciality‘ s odkazmi.
A z toho důvodu ti také přijde, že počítač reaguje pomaleji, když se na odkaz přesměruje až po opuštění tlačítka nad ním?


Nehledě na to, že popupů může být přes sebe zobrazeno víc a delším stisknutím Esc bys je mohl všechny nechtěně zavřít, z toho důvodu je také výhodnější použít onkeyup.
quatzael
Profil
joe:
Výhodu schování popupu na onkeyup vidím v tom, že si uživatel může ještě rozmyslet, kdy ho chce skrýt a skryje ho, až když klávesu opustí.
No já tam budu mít vždycky jenom maximálně jedno pop-up okno. A já většinou když mačkám Esc, tak proto, aby to rychle zmizelo a ne, abych si to ještě prohlížel..
A jako když si to rozmyslím a budu to držet, tak to spíš pustím, protože mě na padne, že tady to Esc stejně nefunguje..
_es
Profil
joe [#20]:
Klávesa ESc „normálne“ reaguje už na zatlačenie dole. Je to tak pri ponuke vyskočenej po stlačení pravého tlačítka myši či klávesy na to na klávesnici. Tou „ikonkou na mapách“ myslíš tých 9 štvorčekov? To tiež reaguje už na stlačenie Esc - no to je už správanie definované v JS.

A z toho důvodu ti také přijde...
Nie, len som písal, že bez toho by drag&drop možnosti nemohli fungovať - nič iné. Ak by to fungovalo už na zatlačenie tlačítka myši, ako by si ten odkaz niekam „pretiahol“? Pri „kliknutí“ pomocou enter to reaguje už na zatlačenie klávesy. Možno sa však v tomto rôzne prehliadače môžu líšiť.

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:

Prosím používejte diakritiku a interpunkci.

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