在keydown事件上使用opera preventDefault()

我试图在我的webapp中embedded一些键盘绑定,而且我正在用Opera很难。 我有这个代码:

window.onkeydown = function(e){ var key = e.keyCode ? e.keyCode : e.charCode ? e.charCode : false; if (e.ctrlKey && key === 84) { alert("foo"); e.preventDefault(); // return false; } } 

它在Firefox和Chrome中很有魅力,但Opera仍然会打开新标签页。 return false;

我的信息: Opera/9.80 (X11; Linux i686; U; en) Presto/2.7.62 Version/11.00

Opera 不支持 keydown上的preventDefault ,仅在keypress

正如你在这个例子中看到的,你应该绑定一个单独的keypress处理程序的Opera(适应你的情况):

 var cancelKeypress = false; document.onkeydown = function(evt) { evt = evt || window.event; cancelKeypress = (evt.ctrlKey && evt.keyCode == 84); if (cancelKeypress) { return false; } }; /* For Opera */ document.onkeypress = function(evt) { if (cancelKeypress) { return false; } };