网站到后期测试时发现,图片拖拽功能在IE,360,google是正常的,但在Firefox中不能正常使用。
一步步调试发现,在console中报错“TypeError:event is not undefined”,也就是说在我们处理逻辑的函数中不存在window.event对象。
上网查了一下发现,window.event在firefox中不是像在IE中为全局变量,只是一个临时的,需要通过参数传递到函数,或者通过其他方式获取。
window.onload = function () { var target = window.event; console.log(typeof target); }
可以分别在ie和火狐中运行这段代码,你会发现得到的结果是不一样的,IE下是object,而在firefox下则是undefined.如果直接引用event的相关属性,在控制台会报错,就像上面说的那样。
大致原因好像是说他们遵循了不同的标准,这个就无法进一步说明了,有兴趣的可以自己搜一下。
下面说一下解决方法
1.通过参数传递event,而且在IE下这种方式也是兼容的。
window.onload = function (event) { console.log(typeof event); }
2.如果不想通过显式传递参数来做的话,这儿有另一种方式。
window.onload = function () { var evt = window.event || arguments[0]; console.log(typeof evt); }
网上还有这种形式的,
var evt = window.event || arguments.callee.caller.arguments[0];
其实具体都是从同一个地方取值的,但不知道为什么我测试了一下这种方式,在火狐下会报错:TypeError:arguments.callee.caller is null,不知道是什么原因,具体细节可以参照这个链接www.jb51.net/article/32839.htm
至于具体的event下的属性异同,可以参照这篇文章:http://www.ok12.net/js/125.html
下面是参照的其他一些文章:
http://blog.csdn.net/prettywhitewolf_xiao/article/details/7537612
http://dbear.iteye.com/blog/814509
http://blog.csdn.net/cyxlzzs/article/details/6711924