在 AS3.0 有
obj.addEventListener(eventName,functionToCall)
obj.dispatchEvent(new Event(eventName));如题JS也有吗? 如果有如何定义和使用?

解决方案 »

  1.   

    在这里顺便 再 提一个问题
    IE7 用 JS 控制 position:relative 的DIV[id = ContentDiv] 高度时鼠标会不停的闪动,这个要怎么处理啊?
    <div id="ContentDiv" class="SubjectTab BlueTab" style="overflow:hidden;position:relative">
         <div class="TabPartItem" style="overflow:hidden;*position:relative;*z-index:1"></div>
         <div class="TabPartItem" style="overflow:hidden;*position:relative;*z-index:1"></div>
         <div class="TabPartItem" style="overflow:hidden;*position:relative;*z-index:1"></div>
    </div>
      

  2.   

    function addEventHandler(tatget, eventName, handler) {
        if (tatget.addEventListener) {
            tatget.addEventListener(eventName, handler, false);
        } else if (tatget.attachEvent) {
            tatget.attachEvent("on" + eventName, handler);
        } else {
            tatget["on" + eventName] = handler;
        }
    }function removeEventHandler(tatget, eventName, handler) {
        if (tatget.removeEventListener) {
            tatget.removeEventListener(eventName, handler, false);
        } else if (tatget.eventName) {
            tatget.detachEvent("on" + eventName, handler);
        } else {
            tatget["on" + eventName] = null;
        }
    }
      

  3.   

    /*注销事件
     * @param {Object} oTarget 对象
     * @param {String} sEventType 事件类型
     * @param {Function} fnHandler 事件方法
     */
    var removeEventHandler = function(oTarget, sEventType, fnHandler) {
    if(oTarget.listeners && oTarget.listeners[sEventType]){
    var listeners = oTarget.listeners[sEventType];
    for(var i = listeners.length-1;i >= 0 && fnHandler;i--){
    if(listeners[i] == fnHandler){
    listeners.splice(i,1);
    }
    }
    if((!listeners.length || !fnHandler) && listeners["_handler"]){
    oTarget.removeEventListener ? oTarget.removeEventListener(sEventType, listeners["_handler"], false) : oTarget.detachEvent('on' + sEventType, listeners["_handler"]);
    delete oTarget.listeners[sEventType];
    }
    }
    }
    /*添加事件
     * @param {Object} oTarget 对象
     * @param {String} sEventType 事件类型
     * @param {Function} fnHandler 事件方法
     */
    var addEventHandler = function(oTarget, sEventType, fnHandler) {
    oTarget.listeners = oTarget.listeners || {};
    var listeners = oTarget.listeners[sEventType] = oTarget.listeners[sEventType] || [];
    listeners.push(fnHandler);
    if(!listeners["_handler"]){
    listeners["_handler"] = function(e){
    var e = e || window.event;
    for(var i = 0,fn;fn = listeners[i++];){
    fn.call(oTarget,e)
    }
    }
    oTarget.addEventListener ? oTarget.addEventListener(sEventType, listeners["_handler"], false) : oTarget.attachEvent('on' + sEventType, listeners["_handler"]);
    }
    }/*触发事件
     * @param {Object} oTarget 对象
     * @param {String} sEventType 事件类型
     */
    var dispatchEventHandler = function(oTarget,sEventType){
    if(oTarget.dispatchEvent){
    var e = document.createEvent('Event');
    e.initEvent(sEventType,true,true);
    oTarget.dispatchEvent(e);
    }else{
    oTarget.fireEvent('on'+sEventType);
    }
    }