Javascript 按下键事件时的默认值()
我正试图在我的webapp中嵌入一些键绑定,但我在Opera方面遇到了困难。我有以下代码:Javascript 按下键事件时的默认值(),javascript,linux,opera,keyevent,preventdefault,Javascript,Linux,Opera,Keyevent,Preventdefault,我正试图在我的webapp中嵌入一些键绑定,但我在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;
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仍然会打开新的标签。返回false时也会发生同样的情况代码>
我的信息:Opera/9.80(X11;Linux i686;U;en)Presto/2.7.62版本/11.00
OperapreventDefault
onkeydown
,仅在按键上
如中所示,您应该为Opera绑定一个单独的keypress
处理程序(适合您的情况):
谢谢你帮助他,并对虫子感到抱歉:-(@hallvors:不客气,但是呃…你对什么虫子感到抱歉?你为Opera工作吗?是的,我为:)。这是困扰web开发人员的最常见问题之一,我们最终应该在下一个主要版本发布之前与其他浏览器保持一致。@hallvors:啊,是的,我现在明白了。很高兴这里有个歌剧演员。顺便说一句,这确实是Twitter一个可怕的浏览器嗅探决定,特别是当他们使用jQuery时(是的,我看到了input
和textInput
)之间的区别。)@hallvors:还有一个问题:当Opera不再有这个bug时,我们将如何检测它?使用特征推断检测浏览器版本,如?甚至还有一个精确描述支持哪些函数的方法。;-)
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;
}
};