konto usunięte

Temat: onkeydown, onkeyup, onkeypress - Opera, dziecko...

Witam,
mam prośbę do fanów Opery którzy spędzają czas by ich aplikacje działały również pod tą przeglądarką. Zaczynam ostatnio rozumieć czemu Google nie chce jej wspierać. Odbiłem się ostatnio od małego problemu chcąc sprawić by projekcik nad którym pracuje działał również w Operze.

Poddałem się i szukam Waszej pomocy. Kod do obejrzenia:

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
Test, odpal konsole
</body>
<script type="text/javascript">
window.onkeyup = function() { console.log('KEY UP'); }
window.onkeypress = function() { console.log('KEY PRESS'); }
window.onkeydown = function() { console.log('KEY DOWN'); }
</script>
</html>


Wynik w "normalnych" przeglądarkach kiedy nacisnę i przytrzymam przycisk A:

KEY DOWN
KEY PRESS
KEY DOWN
KEY PRESS
KEY DOWN
KEY PRESS
KEY DOWN
KEY PRESS
KEY DOWN
KEY PRESS
KEY DOWN
KEY PRESS
(puszczam przycisk)
KEY UP


A teraz Opera:

KEY DOWN
KEY PRESS
KEY UP
KEY DOWN
KEY PRESS
KEY UP
KEY DOWN
KEY PRESS
KEY UP
KEY DOWN
KEY PRESS
KEY UP
...


Łapiecie o co chodzi ? Mimo ciągłego trzymania przycisku Opera z jakiegoś powodu wywołuje event onkeyup rozwalając mi całą koncepcję. Zna ktoś jakiś sensowny fix na to ?

Pozdrawiam i z góry dzięki za zainteresowanie. Mam nadzieje że o czymś zapomniałem i jest prosty fix. Głupio by było postawić Operę obok IE jeżeli chodzi o dodatkową pracę jaką trzeba poświęcić by usatysfakcjonować jej kaprysy.

konto usunięte

Temat: onkeydown, onkeyup, onkeypress - Opera, dziecko...

Przychodzi mi do głowy rozwiązanie które stosowałem w javie w awt do tego samego czyli:
Jak dostajesz KeyUP to robisz setTimeout, i zapisujesz id timera do pola tablicy przeznaczonego dla tego przycisku. Jak dostajesz KeyDown to sprawdzasz czy w tej tablicy jest zapisany timer i jeśli jest to robisz clearTimeout. A w kodzie timeouta wywołujesz swoją procedurę onKeyUP.

PS: KeyUP i KeyDown to w ogóle kiepskie rozwiazanie bo nie dziala na mobilnych.Michał Łaszczewski edytował(a) ten post dnia 23.09.12 o godzinie 11:22

konto usunięte

Temat: onkeydown, onkeyup, onkeypress - Opera, dziecko...

Nie napisałeś, czy uruchamiasz Operę na linuchu czy windzie. W windowsie dostaję
KEY DOWN
KEY PRESS
KEY PRESS
KEY PRESS
KEY PRESS
KEY PRESS
KEY PRESS
KEY UP
co tak naprawdę wydaje się najsensowniejsze. Wygląda to na błąd wersji linuxowej. Ktoś to już tutaj zgłosił.

konto usunięte

Temat: onkeydown, onkeyup, onkeypress - Opera, dziecko...

Michał Łaszczewski:
PS: KeyUP i KeyDown to w ogóle kiepskie rozwiazanie bo nie dziala na mobilnych.

To nie problem. Piszę sobie kompletną obsługę sterowania. Zrobione na potrzebę gry, będzie zaadaptowane do aplikacji. Trik polega na tym że definiujesz akcje i przypisujesz klawisze. W zależności od urządzenia albo na ekranie pojawią się kontrolki dla ekranów dotykowych z przypisanymi akcjami albo będziesz miał obsługę po klawiaturze.
Krzysztof Kawa:
Nie napisałeś, czy uruchamiasz Operę na linuchu czy windzie. W windowsie dostaję
KEY DOWN
KEY PRESS
KEY PRESS
KEY PRESS
KEY PRESS
KEY PRESS
KEY PRESS
KEY UP
co tak naprawdę wydaje się najsensowniejsze. Wygląda to na błąd wersji linuxowej. Ktoś to już tutaj zgłosił.

I o to mi chodziło. Dzięki. Wygląda na to że będę miał więcej kombinowania z obsługą klawiatury. Ale trzeba przyznać że dla liter Opera pod Windowsem robi to najlepiej z całej trójcy. Chyba że Firefox i Chrome zachowują się tak samo a tylko pod Linuksem coś szwankuje. Dariusz Półtorak edytował(a) ten post dnia 23.09.12 o godzinie 12:31

Następna dyskusja:

Opera, problem z linkiem




Wyślij zaproszenie do