我使用这段代码来检查keydown,并在按下一个键时显示字符串'Pressed‘。
<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中工作呢?谢谢
发布于 2011-05-25 06:04:40
<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。
发布于 2011-05-25 05:25:49
一些浏览器具有全局事件对象,其他浏览器将事件对象作为参数发送到事件处理程序。Chrome和Internet Exlporer使用前者,Firefox使用后者。
一些浏览器使用keyCode,其他浏览器使用charCode。
使用arguments[0]拾取作为参数发送的事件对象,如果没有对象,则有一个全局对象:
onkeydown="doKey(arguments[0] || window.event)"在该方法中,您可以检查keyCode或charCode
function doKey(event) {
var key = event.keyCode || event.charCode;
...
}请注意小写的名称onkeydown。如果您使用的是XHTML,则事件名称必须为小写,否则浏览器可能会忽略它。
发布于 2011-06-21 23:00:54
我也遇到过同样的问题,我相信成千上万的程序员都遇到过。
问题是浏览器(而不是IE)不喜欢window.event。
我正在四处寻找解决方案(这就是我偶然发现这个问题的原因),我发现了以下内容(到目前为止):
1)写入JQuery:
$(document).keyup(function(e) {
var GetKey = e.keyCode;
`enter code here`
}
});2)重新定义关键变量:
var key = (window.event) ? evt.keyCode : evt.which;我尝试了JQuery解决方案。在FF中似乎还可以,但我在IE中遇到了一个意想不到的bug,我仍在努力解决。我还没有尝试第二种解决方案;如果我不能让JQuery工作,那就是下一步。
https://stackoverflow.com/questions/6116933
复制相似问题