问题描述
在创建事件的响应函数时(比如:鼠标的坐标 键盘哪个按键被按下 鼠标滚轮滚动的方向),
调用如 XXX.onclick = function(event){
。。。。。。
} 这样的函数时,在现代浏览器内都可正常执行,但在ie8及以下的浏览器内却失效。
实例
名称
实时显示鼠标坐标
功能简介
如下图,当鼠标在上面的框里时,下面的框中显示当前鼠标坐标
源代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
#areaDiv {
border: 1px solid black;
width: 300px;
height: 50px;
margin-bottom: 10px;
}
#showMsg {
border: 1px solid black;
width: 300px;
height: 20px;
}
</style>
<script type="text/javascript">
window.onload = function () {
var areaDiv = document.getElementById("areaDiv");
var showMsg = document.getElementById("showMsg");
areaDiv.onmousemove = function (event) {
//此处是解决方法
event = event || window.event;
var x = event.clientX;
var y = event.clientY;
showMsg.innerHTML = "x = " + x + " , y = " + y;
};
};
</script>
</head>
<body>
<div id="areaDiv"></div>
<div id="showMsg"></div>
</body>
</html>
问题分析
在IE8中,响应函数被触发时,浏览器不会传递事件对象,
在IE8及以下的浏览器中,是将事件对象作为window对象的属性保存的
解决办法
在响应函数内,添加一条语句
event = event || window.event;