2012-03-01 82 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()结合使用。不能保证它会有帮助,但它可能会。