首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >window.event.keyCode在火狐上怎么做?

window.event.keyCode在火狐上怎么做?
EN

Stack Overflow用户
提问于 2011-05-25 05:10:44
回答 3查看 51.1K关注 0票数 10

我使用这段代码来检查keydown,并在按下一个键时显示字符串'Pressed‘。

代码语言:javascript
复制
<body onKeyDown="doKey(window.event.keyCode)" onKeyUp="doKey2(window.event.keyCode)">

<script>
function doKey($key) {
  document.getElementById('keydown').innerHTML='Pressed';
}

function doKey2($key) {
  document.getElementById('keydown').innerHTML='';
}
</script>

<div id="keydown"></div>

问题是,由于某些原因,它只能在Chrome上运行。我认为'window.event.keyCode‘不会返回任何东西。我如何让它至少在Firefox中工作呢?谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-25 06:04:40

代码语言:javascript
复制
<html>
    <body onKeyDown="doKey(event)" onKeyUp="doKey2(event)">

    <script>
    function doKey(e) {
        evt = e || window.event; // compliant with ie6        
        document.getElementById('keydown').innerHTML = evt.keyCode+' Pressed';
    }

    function doKey2(e) {
        document.getElementById('keydown').innerHTML='';
    }
    </script>

    <div id="keydown"></div>
    </body>
</html>

如果我们将event作为参数传递,那么大多数现代浏览器都能很好地工作。我测试过Chrome 12,Firefox 4,IE 7/8/9。

票数 14
EN

Stack Overflow用户

发布于 2011-05-25 05:25:49

一些浏览器具有全局事件对象,其他浏览器将事件对象作为参数发送到事件处理程序。Chrome和Internet Exlporer使用前者,Firefox使用后者。

一些浏览器使用keyCode,其他浏览器使用charCode

使用arguments[0]拾取作为参数发送的事件对象,如果没有对象,则有一个全局对象:

代码语言:javascript
复制
onkeydown="doKey(arguments[0] || window.event)"

在该方法中,您可以检查keyCodecharCode

代码语言:javascript
复制
function doKey(event) {
  var key = event.keyCode || event.charCode;
  ...
}

请注意小写的名称onkeydown。如果您使用的是XHTML,则事件名称必须为小写,否则浏览器可能会忽略它。

票数 22
EN

Stack Overflow用户

发布于 2011-06-21 23:00:54

我也遇到过同样的问题,我相信成千上万的程序员都遇到过。

问题是浏览器(而不是IE)不喜欢window.event。

我正在四处寻找解决方案(这就是我偶然发现这个问题的原因),我发现了以下内容(到目前为止):

1)写入JQuery:

代码语言:javascript
复制
    $(document).keyup(function(e) {
        var GetKey = e.keyCode;
`enter code here` 
        }
    });

2)重新定义关键变量:

代码语言:javascript
复制
var key = (window.event) ? evt.keyCode : evt.which;

我尝试了JQuery解决方案。在FF中似乎还可以,但我在IE中遇到了一个意想不到的bug,我仍在努力解决。我还没有尝试第二种解决方案;如果我不能让JQuery工作,那就是下一步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6116933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档