event 兼容调用(IE,Firefox,Chrome)

这两天在接触 jQuery EasyUI(http://jquery-easyui.wikidot.com/ ),在调用window.event的时候发现了Firefox在调用event的时候有些兼容问题:

在Firefox页面调用后,其windows.event对象为undefined:

if (typeof (window.event) == 'undefined') alert('window.event is undefined.'); else alert('window.event is defined.');

 

以上代码在Firefox中执行,结果为:"window.event is undefined."。IE 和 Chrome中执行结果:“window.event is defined."。

 

在Firefox中需要调用event必须在调用方法中传递一个参数event,但是jQuery EasyUI中有些动作不能传递自定义参数,比如 tree 中的 onChick(node)中,只能传递node参数。为了解决这个问题,页面加载时需要执行以下代码,初始化一个event即可解决这个问题:

 

function loadEvent() { if (!document.all) { window.constructor.prototype .__defineGetter__( "event", function() { var func = arguments.callee.caller; while (func != null) { var arg0 = func.arguments[0]; if (arg0 && (arg0.constructor == Event || arg0.constructor == MouseEvent)) { return arg0; } func = func.caller; } return null; }); } }  

另外在Firefox中获取鼠标当前坐标也存在不同的调用方法:

 

menu_x = event.x ? event.x : event.pageX; menu_y = event.y ? event.y : event.pageY;

 

在IE和Chrome中,使用event.x和event.y即可获得鼠标坐标,而在Firefox中需使用event.pageX和event.pageY获取。

 

你可能感兴趣的:(jquery,function,chrome,IE,firefox,menu)