Chl*_*hil 3 javascript events prototypejs
以下适用于IE6,IE7和chrome.不适用于ff 3.0.7.
<html><head>
<script src="prototype.js" type="text/javascript" ></script>
<script type="text/javascript">
Event.observe(window, 'load',
function(){
Event.observe(document.body, 'keydown', myEventHandler);
alert('window load');
});
function myEventHandler(evt) {
alert(evt);
}
</script>
</head>
<body >
<input type="text" /><br><br>
</body></html>
Run Code Online (Sandbox Code Playgroud)
编辑:通过"不工作"我的意思是myEventHandler没有在Firefox中触发.
EDIT2:此外,当焦点在输入元素上时,它工作正常.我想要为所有的keydowns开火.
我不知道为什么你的代码不起作用,但它过于复杂 - 这应该做的伎俩:
document.observe('keydown', myEventHandler);
Run Code Online (Sandbox Code Playgroud)
有没有需要等待load的document立即可用.
您的代码不起作用,因为并非所有关键事件都源自文档的body元素.Opera有类似于Firefox中的问题,但原始元素似乎还取决于鼠标光标的位置.
无论如何,修复只是捕获事件的document级别,因为只要没有人阻止他们这样做,所有DOM事件document最终都会冒出来.