Tôi đã tạo một fiddle đơn giản để xác định điều gì sẽ xảy ra khi một nút văn bản trong phần tử có thể chỉnh sửa được sửa đổi bằng một lần nhấn phím. Như tôi đã làm điều đó, tôi quyết định kiểm tra những gì sẽ xảy ra khi sử dụng ibus vì tôi sử dụng ibus cho công việc của riêng tôi. Tôi xác định rằng khi ibus được sử dụng, sự kiện bàn phím duy nhất được tạo ra là một sự kiện keyup với giá trị which
là vô dụng.
Đây là fiddle tôi đã tạo:
http://jsfiddle.net/lddubeau/jWnL3/
Tới fiddle đó.
Bật bảng điều khiển Javascript của bạn.
Nhấp vào chạy.
Nhấp vào giữa ký tự 2dn và thứ ba của từ "toto".
Nhập nội dung nào đó bằng ibus. Ví dụ, gõ 我.
Kết quả khác nhau tùy thuộc vào trình duyệt của bạn. Trên Chrome 29 mỗi lần gõ phím được ghi lại vì vậy nếu tôi gõ 我 bằng cách sử dụng phương pháp tonepy, tôi lấy keyup và keydown cho mỗi "w" "o" "3" và "1". (Các bính âm, giai điệu và sau đó nhấn 1 để chọn lựa chọn đầu tiên.) Sự kiện này cuối cùng là:
event type: keyup
which: 229
keyCode: 229
charCode: 0
node value:
to我to
Các sự kiện trước khi một người này tất cả đều có cùng các giá trị ngoại trừ một số là của "KeyDown" loại và tất nhiên giá trị nút hiển thị "toto" cho đến khi sự kiện cuối cùng.
Trên Firefox 23 chỉ có một sự kiện được đăng ký:
"event type:" "keyup"
"which:" 49
"keyCode:" 49
"charCode:" 0
"node value:" "
to我to
"
Không KeyDown hoặc bấm phím sự kiện được tạo ra. (Khi nhập các ký tự trong phạm vi ascii, bạn sẽ nhận được keydown, keypress và keyup cho mỗi khóa.)
Giá trị trong đó và mã phím dường như không tương ứng với bất kỳ điều gì hợp lý. Tôi đã kiểm tra đối tượng sự kiện được truyền cho trình xử lý sự kiện và không thấy bất kỳ trường nào cho biết rằng người dùng vừa nhập 我.
Bạn có muốn xây dựng thêm về trường hợp sử dụng của mình không? có lẽ cách duy nhất để đạt được điều đó là cung cấp phương thức nhập liệu dựa trên web cho chính bạn. –