onkeydown javascript event alternatief
ik ben bezig met m'n eindwerk waarbij ik een robot zou moeten kunnen besturen via een website..
Nu dat lukt allemaal wel, maar je hebt knopjes bv "forward"..
Ik wil dat wanneer er op die knop geklikt wordt m'n javascript (werk met ajax) de commando's eenmaal verstuurd en het stop commando verstuurd wanneer je de muis opnieuw uitgedrukt laat..
Dus dacht ik onkeydown="send('forward')" en het stopcommando door onkeyup="resetStatus()"..
Nu zie ik dat onkeydown en onkeyup verouderd zijn en door veel browsers niet meer ondersteund, is er een alternatief voor..?
(mijn code werkt, met onclick getest eerst, ik heb dus gewoon een alternatief voor de event onkeydown nodig.. of een hack om het te doen werken..)
Mvg,
Paradox
Offtopic; voor de geïnteresseerden met onclick: http://vimeo.com/18197670
Het kan misschien wel aan mij liggen.
keyup en keydown werken prima.
Bij sommige webbrowsers (bv. Opera) heb je wel het probleem dat veel toetsen een werking hebben voor de browser zelf (inzoomen, scrollen, ...), waardoor je die moeilijk kan gebruiken voor javascript.
Gewijzigd op 27/12/2010 13:40:56 door Kris Peeters
Een keydown/keyup event is niet verouderd. Wat ik me wel afvraag is aan welk element je de events koppelt, want keyup/keydown worden waarschijnlijk naar het actieve element gestuurd. Om dat te kunnen zijn moet het waarschijnlijk een form-element of link zijn. Het helpt dan om de key-events te koppelen aan het hele document, dan kun je het goed combineren met (andere) click-events.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form action="" method="post">
<table style="margin: auto;">
<tr>
<td>
<input value="Left" onkeydown="send('left')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
<td>
<input value="Forward" onkeydown="send('forward')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
<td>
<input value="Backward" onkeydown="send('backward')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
<td>
<input value="Right" onkeydown="send('right')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
</tr>
</table>
</form>
<table style="margin: auto;">
<tr>
<td>
<input value="Left" onkeydown="send('left')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
<td>
<input value="Forward" onkeydown="send('forward')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
<td>
<input value="Backward" onkeydown="send('backward')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
<td>
<input value="Right" onkeydown="send('right')" onkeyup="resetStatus()" style="padding: 15px; font-size: 14px;" type="button">
</td>
</tr>
</table>
</form>
Buiten het feit dat je gehoord hebt dat het verouderd is (wat hier ontkend wordt)... Is er eigenlijk iets dat niet werkt?
en je kan eventueel onkeypress gebruiken om de hele handeling in 1 keer te doen.
@Nicoow; geen optie want dan blijft de javascript optie uitgevoerd worden terwijl dat de poort geset moet worden en vervolgens terug gereset.. Het is niet realtime van zodra het commando niet meer gestuurd wordt dat de poort uit gaat, er moet wel degelijk een commando gestuurd worden om de poort af te zetten en dat zou dus het makkelijkste moeten gaan met onkeyup en onkeydown..
Dan kan je het met JQuery opvangen, dat kan ook prima.
Ik zoek dus een manier om op een knopje te klikken (met de muis) en wanneer je er op klikt een javascript functie wordt aangeroepen en wanneer je het knopje weer uitdrukt (muis los laat) er een 2de javascript functie wordt aangeroepen..
EDIT2; net wat in de javascript events reference zitten kijken, eens met onmousedown en onmouseup proberen..
EDIT3; en ja hoor, nu doet ie het zoals het moet :p.. Mijn excuses voor mijn verwarring, ik ben wat vermoeid..
Gewijzigd op 27/12/2010 16:24:34 door Wouter De Schuyter
Mouse en Key acties zijn 2 verschillende dingen:P
Niets houdt je tegen om ook keyboard events toe te voegen.
Maar ja, je moet maar zien of je daar dan nog zin in hebt.
De events zelf zijn uiteraard niet verouderd...
Pim - op 27/12/2010 17:19:40:
Wat 'verouderd' is, is het inline gebruiken van event listeners. Doe deze apart in een JS file!
De events zelf zijn uiteraard niet verouderd...
De events zelf zijn uiteraard niet verouderd...
Vind jij facebook verouderd..?
Hint: kijk eens naar de sourcecode, van bv een "like" button.