取消设置为键盘快捷键的默认操作

时间:2012-03-01 19:31:46

标签: javascript keyboard-shortcuts

我在这里找到了几个关于此的问题,但找不到解决方案。

    //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 9中alt+E的默认操作。目前它正在完成我想要它做的事情,但同时放下“编辑”菜单。我找到了使用e.returnValue = false作为解决方案的在线人员,但这似乎不起作用。 console.log(e.returnValue)返回undefined。

提前致谢!

1 个答案:

答案 0 :(得分:0)

很可能在IE中无法做到这一点。我记得在尝试创建一个可以处理ctrl + click的事件处理程序时苦苦挣扎。不幸的是,在IE中产生了一个新的浏览器选项卡,并且该行为被硬编码到浏览器中,似乎独立于其JS引擎。

通常,preventDefault可以解决这个问题,但如果不这样做,你可能需要考虑是否可以为IE用户使用不同的键盘快捷方式,以防默认情况下无法预防。

编辑:虽然,您可能想尝试将stopPropagation()与preventDefault()结合使用。不能保证它会有所帮助,但可能会有所帮助。