2012-12-25 18 views
6

Tôi đã tìm thấy mã sau trên internet, khi tôi thấy giải pháp này, tôi tự hỏi liệu mã khóa này có giống nhau cho tất cả các trình duyệt hay không.Mã char Javascript có tương thích với tất cả hoặc một số trình duyệt nhất định không?

var CalendarFilter = Backbone.View.extend({ 
     // ... 
     events: { 
     'click .filter': 'filter', 
     'keypress input[type=text]': 'filterOnEnter' 
     }, 
     filterOnEnter: function(e) { 
     if (e.keyCode != 13) return; 
     this.filter(e); 
     }, 
     filter: function(e) { /* ... */ }); 
     } 
    }); 

Chắc chắn, cảm ơn.

Trả lời

6

Trước hết, charCode không phải là keyCode! charCode sau tập ascii, trong khi keyCode là một chỉ số đặc biệt của khóa .. Các giá trị khác nhau giữa hai có thể được nhìn thấy ở đây: Keyboard Event Character Values for the Lower ASCII Character Set - O'Reilly Answers

Một khác biệt lớn giữa charCodekeyCodecharCode is deprecated và thường không có giá trị trong một số trình duyệt [ngoài 0] khi được tham chiếu

Vui vẻ đủ, onkeypress dường như trả lại character code instead of the keyCode, trong khi onkeyup và onkeydown hoạt động như mong đợi, do đó có thể có một số vấn đề khi phát hiện giá trị keyCode. Bạn có thể kiểm tra điều này ở đây JavaScript - Detecting keystrokes - Tham chiếu bổ sung: keyCode and charCode.

keyCode, charCodewhichnot recommended by w3c, tuy nhiên, vẫn còn hỗ trợ kế thừa cho mô hình keyCode. Hỗ trợ đa nền tảng trình duyệt/nền tảng được thực hiện với fixed virtual keyCodes mà không phụ thuộc vào bố trí bàn phím - do đó là "ảo".

mã phím ảo khác - bên ngoài của mã phím ảo cố định - dường như được thực hiện nhất quán trên các nhà cung cấp cũng như: KeyboardEvent - Document Object Model (DOM) | MDNVirtual-Key Codes (Windows)

jQuery sử dụng riêng của nó keyCode/charCode sở hữu đối tượng sự kiện: .which, mà cố gắng để thống nhất keyCodecharCode.Và ủng hộ keyCode giá trị - event.which – jQuery API

Nói tóm, bạn cụ thể keyCode: "13", nên làm việc với hầu hết các trình duyệt hỗ trợ javascript vì nó là một mã phím ảo cố định và phù hợp với tất cả các trình duyệt và nền tảng

1

Tất nhiên. Nó giống nhau trên toàn bộ máy tính.

1

Phím mã 13 (dòng mới) không có vấn đề với hệ điều hành chéo hoặc tương thích trình duyệt chéo. Đừng lo lắng.

1

Mã khóa là tiêu chuẩn, nhưng tốt nhất bạn cũng nên kiểm tra mã khóa 10. 10 là mã khóa cho "nguồn cấp dữ liệu dòng", trong khi 13 là mã khóa cho "trả về vận chuyển". Có một sự khác biệt lịch sử giữa hai (loại nhà văn cần thiết để gửi cả hai tín hiệu, một "dòng thức ăn" để di chuyển giấy lên và một "vận chuyển trở lại" để di chuyển các phần mà loại ở phía bên trái của bài báo).

Ví dụ, một kiểm tra nhanh cho thấy Ctrl +Nhập gửi keyCode 10 trên Chrome trên Windows. Có thể một số hệ thống nix sử dụng mã khóa 10, mặc dù tôi không thể xác nhận. Và tìm kiếm trên Google hiển thị iPhone may send 10. Có thể có các trường hợp khác.

Một số hệ thống sử dụng một và một số sử dụng khác để biểu diễn ngắt dòng (cuối cùng tôi đã chọn, Windows sử dụng kết hợp cả hai), nhưng trong thế giới hiện đại, chúng thực tế có nghĩa là Nhập. bao gồm cả hai cơ sở.

Các vấn đề liên quan