IE和Firefox对于捕获Event的处理是不同的。
IE把Event作为window的一个属性,通过window.event的方式进行使用;而FIrefox却是把Event对象作为函数的一个参数来捕获的。你是不是比较糊涂了?
别着急,看下面这个例子就明白了。
当鼠标点击页面中某个位置时,弹出一个对话框,显示点击点在屏幕中的坐标。
document.onmousedown=mouseDown;
IE中:
function mouseDown(){
var locString="X="+window.event.screenX+" Y="+window.event.ScreenY;
alert(locString);
}
在Firefox中:
function mouseDown(ffEvent){
var locString="X="+ffEvent.screenX+" Y="+ffEvent.ScreenY;
alert(locString);
}
那我们在实际的代码中该怎样写呢?
现提供一种对IE和Firefox的兼容模式,用三元运算符就行判断(对象检测),代码如下:
function mouseDown(ffEvent){
var theEvent=ffEvent?ffEvent:window.event;
var locString="X="+theEvent.screenX+" Y="+theEvent.ScreenY;
alert(locString);
}
该应用的完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>X/Y Marks the Spot</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
//<![CDATA[
function mouseDown(ffEvent){
var theEvent=ffEvent?ffEvent:window.event;
var locString="X="+theEvent.screenX+" Y="+theEvent.ScreenY;
alert(locString);
}
document.onmousedown=mouseDown;
//]]>
</script>
</head>
<body>
</body>
</html>