2012-03-01 72 views
0

我在這裏發現了一些關於此問題的問題,但無法找到解決方案。取消對鍵盤快捷鍵設置的默認操作

//Add keyboard shortcuts for convenience. 
self.iframe.addEventListener('keydown', function(e){ 
    //Check for alt+p and make sure were not in fullscreen 
    if(e.altKey && e.keyCode === 80 && !fullScreenApi.isFullScreen()){ 
    self.preview(); 
    } 
    //Because Macs e == 69, but alt+e == 229 which is the ´ character, 
    if(e.altKey && e.keyCode === 69 || e.keyCode === 229){ 
    e.preventDefault ? e.preventDefault() : e.returnValue = false; 
    console.log(e.returnValue); 
    if(!fullScreenApi.isFullScreen()){ 
     self.edit(); 
    } 
    } 
    //Check for alt+f 
    if(e.altKey && e.keyCode === 70){ 
    e.preventDefault ? e.preventDefault() : e.returnValue = false; 
    fullScreenApi.requestFullScreen(fsElement); 
    } 
}); 

我所試圖做的是取消在Internet Explorer爲alt+E的默認操作9.目前它完成了我想要它做的,但同時去掉了「編輯」菜單下。我發現使用e.returnValue = false作爲解決方案的在線人員,但這似乎並不奏效。 console.log(e.returnValue)返回undefined。

在此先感謝!

回答

0

這很可能是在IE中沒有辦法做到這一點。我記得努力嘗試創建一個處理ctrl + click的事件處理程序。不幸的是,在IE中,這產生了一個新的瀏覽器選項卡,並且行爲被硬編碼到瀏覽器中,看起來獨立於它的JS引擎。

通常情況下,preventDefault可以做到這一點,但如果不這樣做,您可能需要考慮是否可以爲IE用戶使用不同的鍵盤快捷鍵,以防默認設置不可預防。

編輯:雖然,你可能想嘗試使用stopPropagation()與preventDefault()結合使用。不能保證它會有幫助,但它可能會。