【问题标题】:Cancelling default actions set to keyboard shortcuts取消设置为键盘快捷键的默认操作
【发布时间】:2012-03-01 19:31:46
【问题描述】:

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

    //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) 返回未定义。

提前致谢!

【问题讨论】:

    标签: javascript keyboard-shortcuts


    【解决方案1】:

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

    通常 preventDefault 可以解决问题,但如果没有,您可能需要考虑是否可以为 IE 用户使用不同的键盘快捷键,以防默认设置根本无法预防。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-07
      • 2010-10-23
      • 2013-09-25
      • 1970-01-01
      • 2018-07-13
      • 2020-04-28
      • 2014-05-04
      相关资源
      最近更新 更多