Javascript 防止IE9中的默认密钥处理

Javascript 防止IE9中的默认密钥处理,javascript,internet-explorer,keyboard,internet-explorer-9,Javascript,Internet Explorer,Keyboard,Internet Explorer 9,我想禁用一些默认的浏览器键(CTRL+F、ALT+ENTER),因为它们在我的应用程序场景中没有意义。到目前为止,我读到的是,在IE9中禁用这些事件最重要的一件事是在这种情况下将keyCode设置为0,但是在执行此操作时,我总是会收到一个“拒绝访问”错误 这是我的代码: var fnOnKeyDown = function(event) { if(!event) { event = window.event; } if(event.preventDefault) {

我想禁用一些默认的浏览器键(CTRL+F、ALT+ENTER),因为它们在我的应用程序场景中没有意义。到目前为止,我读到的是,在IE9中禁用这些事件最重要的一件事是在这种情况下将keyCode设置为0,但是在执行此操作时,我总是会收到一个“拒绝访问”错误

这是我的代码:

var fnOnKeyDown = function(event)
{
  if(!event)
  {
    event = window.event;
  }
  if(event.preventDefault)
  {
    event.preventDefault();
  }
  event.returnValue = false;
  event.cancelBubble = true;
  event.keyCode = 0;      
  return false;  
};

window.document.onkeydown = fnOnKeyDown;

如前所述,line event.keyCode=0抛出错误“拒绝访问”。当我删除它或将它放入一个空的try/catch块时,它不会抛出错误,但默认的浏览器键处理不再被抑制。

你确定不是指ie7吗?我在ie9中似乎没有问题

无论如何,这里有一篇微软关于你的文章

要解决此问题,请更改分配 属性,使其不会更改值。这个 代码中的更改允许您使用SHIFT键或CTRL键加载 本地磁盘上的页面

或者,您可以将网页托管在Web服务器上。这使得 确保脚本中的event.keyCode属性正确运行


另外,如果可能的话,我建议使用jquery。像这样的框架通常通过一个公共界面为您处理各种浏览器问题。

event.preventDefault()
event.stopPropagation()
应该足够了,您不需要更改事件本身的任何属性。

我不是Windows。这些也不能通过?;在使用jQuery时,这也可能是足智多谋的;是否尝试在事件对象中使用元键?win和mac之间有区别