当我们想获取鼠标坐标,或者其他获取键盘操作等事件时需要用到event属性,而Firefox下本身没有window.event方法,让很多人望而生畏,感觉这个方法存在兼容性问题而很少去使用它,放弃了很多效果的实现。
下面是根据前辈分的总结的得到的一些获取event以及鼠标坐标的方法示例,希望对大家有帮助。
// 获取鼠标光标相对于整个页面的位置
function getX(e){
e=e||window.event;
var _left = document.documentElement.scrollLeft||document.body.scrollLeft;
return e.pageX||e.clientX+_left;
};
function getY(e){
e=e||window.event;
var _top = document.documentElement.scrollTop||document.body.scrollTop;
return e.pageY||e.clientY+_top;
};
// 获取 event 兼容
function getEvent(){
if(document.all) return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)==’object’ && arg0.preventDefault && arg0.stopPropagation)){
return arg0;
};
};
func=func.caller;
};
return null;
};
function getX(e){
e=e||window.event;
var _left = document.documentElement.scrollLeft||document.body.scrollLeft;
return e.pageX||e.clientX+_left;
};
function getY(e){
e=e||window.event;
var _top = document.documentElement.scrollTop||document.body.scrollTop;
return e.pageY||e.clientY+_top;
};
// 获取 event 兼容
function getEvent(){
if(document.all) return window.event;
func=getEvent.caller;
while(func!=null){
var arg0=func.arguments[0];
if(arg0){
if((arg0.constructor==Event || arg0.constructor ==MouseEvent) || (typeof(arg0)==’object’ && arg0.preventDefault && arg0.stopPropagation)){
return arg0;
};
};
func=func.caller;
};
return null;
};
使用说明:
例如我们获取鼠标的X轴坐标:alert(getX(getEvent()));
看着这个代码不要晕,把上面那一长串代码放进您的JS文件中或者直接放进网页的head中用<script>标签包起来。
然后就直接可以alert(getX(getEvent()));这样引用了。