30/09/2018, 18:26

Bắt sự kiện bàn phím với Javascript trên Firefox?

Mình có đoạn code như dưới nhưng không hiểu vì sao mà nó không chạy trên Firefox

function k_key() {
    switch(window.event.keyCode) {
    case 13:
        start_pause();
        break;
    case 37:
        if (huong_di=="len"||huong_di=="xuong"&&start==true) {
            huong_di="trai";
        }
        break;
    case 38:
        if (huong_di=="trai"||huong_di=="phai"&&start==true) {
            huong_di="len";
        }
        break;
    case 39:
        if (huong_di=="len"||huong_di=="xuong"&&start==true) {
            huong_di="phai";
        }
        break;
    case 40:
        if (huong_di=="trai"||huong_di=="phai"&&start==true) {
            huong_di="xuong";
        }
        break;
    default:
    }
    switch(window.event.which) {
    case 13:
        start_pause();
        break;
    case 37:
        if (huong_di=="len"||huong_di=="xuong"&&start==true) {
            huong_di="trai";
        }
        break;
    case 38:
        if (huong_di=="trai"||huong_di=="phai"&&start==true) {
            huong_di="len";
        }
        break;
    case 39:
        if (huong_di=="len"||huong_di=="xuong"&&start==true) {
            huong_di="phai";
        }
        break;
    case 40:
        if (huong_di=="trai"||huong_di=="phai"&&start==true) {
            huong_di="xuong";
        }
        break;
    default:
    }
}
document.onkeydown=function() {
    k_key()
};
Gió viết 20:33 ngày 30/09/2018

Theo mình tham số onkeydown= function(event){…} rồi thay tham số đó vào window.event của bạn
document.documentElement.onkeydown=…

null viết 20:30 ngày 30/09/2018

Thiếu đối số event, trong Chrome thì nó tự thêm vào, Firefox thì không.
Code bạn có thể viết lại dạng như thế này:

function k_key(event) {
    var kCode = event.keyCode || event.which;
    switch (kCode) {
        case 13:
            console.log('enter');
            break;
        case 37:
            console.log('left');
            break;
        case 38:
            console.log('up');
            break;
        case 39:
            console.log('right');
            break;
        case 40:
            console.log('down');
            break;
        default:
    }
}
document.onkeydown = function(event) {
    k_key(event)
};
True Blue viết 20:32 ngày 30/09/2018

Được rồi, cảm ơn các bạn

Bài liên quan
0