例如,在Gmail中,当按下Ctrl+时B,而不是将其传递给浏览器(通常会显示某种书签管理器),它会出于格式化目的而劫持它,即打开邮件的粗体格式.中间的.Ctrl+ i,Ctrl+ 相同u.
这是怎么做到的?
您可以将一个onkeydown
或onkeyup
事件处理程序附加到全局document
对象.例如,如果我想在每次按下Ctrl-M时将标题栏更改为"asdf",我将通过注册事件处理程序window.onload
,如下所示:
window.onload = function() { document.onkeydown = function(event) { var keyCode; if (window.event) // IE/Safari/Chrome/Firefox(?) { keyCode = event.keyCode; } else if (event.which) // Netscape/Firefox/Opera { keyCode = event.which; } var keyChar = String.fromCharCode(keyCode).toLowerCase(); if (keyChar == "m" && event.ctrlKey) { document.title = "asdf"; return false; // To prevent normal minimizing command } }; };
W3Schools提供了有关使用这些活动的更多信息:onkeydown
和onkeyup
.
此外,我想我应该注意到,各种浏览器在事件属性方面存在一些差异(例如,在Firefox中,你应该通过访问密钥代码event.which
,而在IE浏览器中event.keyCode
,虽然Firefox可能支持event.keycode
-confusing ,不是吗?).因此,我建议通过JavaScript框架(例如Prototype或jQuery)来完成这些工作,因为它们会为您处理所有棘手的兼容性内容.