我正在使用此代码检查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>
Run Code Online (Sandbox Code Playgroud)
问题是,出于某种原因,它只适用于Chrome.我认为'window.event.keyCode'不会返回任何内容.我如何让它至少在Firefox中运行?谢谢
Guf*_*ffa 22
某些浏览器具有全局事件对象,其他浏览器将事件对象作为参数发送到事件处理程序.Chrome和Internet Exlporer使用前者,Firefox使用后者.
有些浏览器使用keyCode,有些则使用charCode.
用于arguments[0]获取作为参数发送的事件对象,如果没有对象,则改为使用全局对象:
onkeydown="doKey(arguments[0] || window.event)"
Run Code Online (Sandbox Code Playgroud)
在该方法中,您可以检查keyCode或charCode
function doKey(event) {
var key = event.keyCode || event.charCode;
...
}
Run Code Online (Sandbox Code Playgroud)
请注意小写名称onkeydown.如果您使用的是XHTML,则事件名称必须小写,否则浏览器可能会忽略它.
sil*_*fox 14
<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>
Run Code Online (Sandbox Code Playgroud)
如果我们event作为参数传递,大多数现代浏览器都会运行良好.我已经测试过Chrome 12,Firefox 4,IE 7/8/9.
| 归档时间: |
|
| 查看次数: |
50121 次 |
| 最近记录: |