Nếu bạn muốn chụp bàn phím sự kiện Ctrl+ Fvà tiếp tục mở hộp tìm kiếm tiêu chuẩn của trình duyệt, bạn có thể thực hiện việc này:
var KEY_CTRL = 17;
var KEY_f = 70;
var isReserved = false;
var useExclusiveKeyEvent = false;
var isNewSearchEvent = false;
/*THIS VARIABLE IS RENDERED BY SERVER SIDE*/
var clientRandomKey = "78349DE472AA30032DE2DF344FF28374";
window.onkeyup=function(ev){
if(ev.which == KEY_CTRL){
isReserved=false;
}
}
window.onkeydown=function(ev){
//!IMPORTANT NOT MAKE UI DELAY IN THIS FUCTION
if(ev.which == KEY_CTRL) {
isReserved=true;
}
if((isReserved==true)&&(ev.which == KEY_f)) {
var currentDate = new Date();
console.log( "INTO EVENT FUNCTION >\n "+ currentDate+ " \n ID: "+clientRandomKey+"\n launch search a word");
isNewSearchEvent=true;
if(useExclusiveKeyEvent){
return false;}
}
}
window.setInterval(function(){
if(isNewSearchEvent){
isNewSearchEvent=false;
//TODO ajax send code
var currentDate = new Date();
var msg = "OUTSIDE EVENT FUNCTION >\n " + currentDate+ " \n ID: "+clientRandomKey+"\n launch search a word"
console.log(msg);
alert(msg);
}
},2500);
Đây là một ví dụ sống .
Như bạn có thể thấy trong ví dụ, khi người dùng nhấn tổ hợp bàn phím bên phải, chức năng sự kiện sẽ gửi một "log string"
bảng điều khiển ("SỰ KIỆN VÀO CHỨC NĂNG"), trong khi thay đổi trạng thái của cờ ( isNewSearchEvent
).
Cờ này được đánh giá trong một bộ đếm thời gian để gửi một cái khác "log string"
trong bảng điều khiển ("CHỨC NĂNG BÊN NGOÀI")
và mở một cảnh báo với cùng một thông điệp.
Lối đi đôi này là cần thiết vì không thể tạo ra các ngắt trong chức năng sự kiện, nên nghe ở tốc độ bắt chính xác.