查看文章 |
关于javascript事件mousemove影响flash鼠标指针系统的问题
2008-11-23 13:35
在做公司项目中做页面拖拽的时候,发现设定好了鼠标手形Cursor的Sprite或者其他DisplayObject,却无法正常显示Cursor,通过测试,发现当没有给页面javascript设置mousemove事件的时候,Sprite上的指针便能正常显示。 而我在操作的时候,其实是每次都给detachEvent过。 我的detachEvent方法已经封装了IE下的 window.detachEvent,和非IE浏览器的 window.removeEventListener 用来卸载mousemove事件。 但是发现此方法在IE下面并不能真正让IE下的mousemove监听给清除。 即便我只给mousemove事件用detachEvent方法添加了一个函数,同时又用detachEvent回收了这个函数,IE仍然会对mousemove做监听。 而要想让IE下的mousemove不影响鼠标系统,只能在设置mousemove事件的时候,使用 document.onmousemove = function(){}; 回收的时候采用 document.onmousemove = null;才行。 不过这样就没有办法给document对象的onmousemove绑定多个函数了。 只能在document对象的onmousemove只会绑定和卸载一个函数的时候使用此方法。 文中提到的相关方法: UtilsDemoBy3tion = { isIE:navigator.userAgent.indexOf("MSIE") == -1 ? false:true, attachEvent:function(eventName,fn,obj,flag){ /// <summary> /// 绑定事件 /// </summary> /// <param name="eventName">事件名称(不写onXXX,只写XXX,如onclick事件,该参数只写click)</param> /// <param name="fn">执行的函数</param> /// <param name="obj">指定的对象</param> /// <param name="flag">是否能被取消(IE无效)</param> obj = obj || window; if(this.isIE) { obj.attachEvent("on" + eventName,fn ); } else { flag = flag || false; obj.addEventListener(eventName,fn, flag); } }, detachEvent:function(eventName,fn,obj,flag){ /// <summary> /// 取消事件绑定 /// </summary> /// <param name="eventName">事件名称(不写onXXX,只写XXX,如onclick事件,该参数只写click)</param> /// <param name="fn">执行的函数</param> /// <param name="obj">指定的对象</param> /// <param name="flag">是否能被取消(IE无效)</param> obj = obj || window; if(this.isIE) { window.detachEvent("on" + eventName,fn ); } else { flag = flag || false; window.removeEventListener(eventName,fn, flag); } } } |
最近读者: