当使用js的严格模式时,在火狐中获取触发绑定事件的event属性出现问题,
'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them
但在非严格模式中可以使用
var event = arguments.callee.caller.arguments[0]
来获取event属性,有没有办法在严格模式下获取event属性?
jQuery帮你解决兼容性问题。
如果不是因为框架默认开启严格模式,就不会有这个问题了,在框架开发的时候也能使用jquery吗,看过很多帖子说的是使用框架的时候最好不要依赖jquery,能讲一讲吗
@向上走向下看:
什么框架?
如果你使用的框架和jQuery之间有冲突,那么框架本身就要解决兼容性问题(毕竟jQuery就是帮我们搞定这件事的)
@西漠以西: 你可以在火狐中试一下,在"use strict"模式下好像就不是兼容性问题,event属性在这种环境下有点不支持的意思。对这个问题真的令我头疼的不行。。。
@向上走向下看:
不是event在你的环境下有问题,而是
火狐中严格模式下 ,'caller', 'callee', and 'arguments' 不能访问。
@西漠以西: 那jquery怎么在严格模式下获取event对象呢,现在脑袋有点懵,都想读jquery源码了
@向上走向下看:
不存在“jquery怎么在严格模式下获取event对象呢”这个问题!
无论在什么模式下,无论在哪种(主流)浏览器中(包含火狐)jQuery都能获取event对象。
这就是jQuery的价值。
至于,如何写代码来使用jQuery获取event对象,你要查看jQuery的官方文档。
@西漠以西: 看了一眼jquery源码,上面第二行就是"use strict",是我理解错了,谢谢你了
“var event = arguments.callee.caller.arguments[0] || window.event ”改一下这句试试?
这个试过了,在严格模式下,火狐不支持callee、caller的用法。
谢谢了
在没有找到解决方法的情况下只能使用原生js对DOM进行操作,操作会更繁琐一些,但是兼容性更好。