2011-01-23 22 views
5

我試圖在我的webapp中嵌入一些keybindings,並且我在Opera中遇到了困難。我有這樣的代碼:在keydown事件上的opera preventDefault()

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魅力,但仍歌劇院打開新的標籤頁。 return false;也是如此。

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

回答

8

歌劇院doesn't supportpreventDefault上​​,只有keypress

正如你可以看到this example,你應該綁定一個獨立的keypress處理程序,歌劇院(適用於您的情況):

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; 
    } 
}; 
+2

謝謝你幫助他,約:-( – hallvors 2011-01-25 02:57:08