---
title: "Fånga knapptryckningar på piltangenterna?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/180699-fånga-knapptryckningar-på-piltangenterna"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "erciz"
published: "2009-10-13T19:23:32.000Z"
updated: "2009-10-15T12:27:52.000Z"
replies: 6
views: 826
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/180699-fånga-knapptryckningar-på-piltangenterna"
---

# Fånga knapptryckningar på piltangenterna?

## #1 — erciz, 2009-10-13T19:23Z

Leker lite med JavaScript och skulle vilja fånga knapptryckningar från piltangenterna, men det verkar inte gå så bra. Använder Google Chrome som webbläsare. Piltangenterna verkar inte ha någon "keyCode", finns det nåt annat sätt att fånga dessa?

```
function f(event){
    alert(event.keyCode);
}

...

<body onkeypress="f(event)">
```

Permalänk: https://www.webforum.nu/p/180699

## #2 — erciz, 2009-10-14T23:01Z

Upptäckte att detta inte fungerar med:

```
<body onkeypress="f(event)">
```

men däremot med:

```
document.onkeydown=f(event);
```

direkt i scriptet.

Permalänk: https://www.webforum.nu/p/2207942

## #3 — nitro2k01, 2009-10-15T08:50Z

Alternativ 2 "fungerar", men gör inte vad du vill att det ska. När den raden körs, så anropas funktionen f en gång, då ser du alert-boxen, sedan tas det returnerade värdet (Alltså inget värde i ditt fall) och document.onkeydown sätts till det värdet. På det sättet lär du inte fånga några knapptryckningar.

Permalänk: https://www.webforum.nu/p/2207957

## #4 — erciz, 2009-10-15T11:17Z

> **[nitro2k01 skrev:](https://www.webforum.nu/p/1484115)**
>
> Alternativ 2 "fungerar", men gör inte vad du vill att det ska. När den raden körs, så anropas funktionen f en gång, då ser du alert-boxen, sedan tas det returnerade värdet (Alltså inget värde i ditt fall) och document.onkeydown sätts till det värdet. På det sättet lär du inte fånga några knapptryckningar.

Mm, du har rätt. Den där versionen fungerade inte särskilt bra. Det slutade med denna kod:

```
document.onkeydown=function(e){f((e||window.event).keyCode);}
```

Men ska jag vara ärlig så förstår jag den inte helt och hållet. Argumentet är e, finns inte det så används ett globalt objekt (window.event)?
Sen blir inte detta samma keyCode-värden som den funktion jag hade i första inlägget, förstår inte det heller. Men detta fungerar utmärkt iaf.

Permalänk: https://www.webforum.nu/p/2207965

## #5 — nitro2k01, 2009-10-15T12:14Z

Bit för bit:

```
document.onkeydown=function(e){
 [I]...[/I]
}
```

...definierar en funktion som används för att lyssna på onkeydown. Det är ungefär likvärdigt med

```
function listenForKeyStrokes(e){
 [I]...[/I]
};

document.onkeydown=listenForKeyStrokes;
```

Notera e.

```
f([I]...[/I]);
```

...är ett anrop till din funktion där du skickar med en key code.

```
(e||window.event)
```

Detta är ett uttryck som väljer ett av objekten e eller window.event. e om det existerar annars window.event. Notera e i funktionshuvudet ovan. Du skulle kunna kalla argumentet för pannkaka om du ville det. Så gör alla webbläsare utom IE. IE har istället ett/också (Beroende på version) ett objekt som heter window.event som är globalt. 

```
([I]...[/I]).keyCode
```

...plockar ut egenskapen keyCode från det valda objektet.

Permalänk: https://www.webforum.nu/p/2207970

## #6 — erciz, 2009-10-15T12:25Z

Utmärkt förklarat!  (y)

Permalänk: https://www.webforum.nu/p/2207972

## #7 — nitro2k01, 2009-10-15T12:27Z

För övrigt, här finns lite läsning om hur olika sätt att läsa av tangenter funkar i olika läsare: <http://www.quirksmode.org/js/keys.html>

Permalänk: https://www.webforum.nu/p/2207973

---

Tråden på webben: https://www.webforum.nu/amne/javascript/180699-fånga-knapptryckningar-på-piltangenterna
