云海帆
云海帆
  • 发布:2016-02-23 19:41
  • 更新:2016-02-23 20:19
  • 阅读:1123

自定义事件如何取消?

分类:HTML5+

发现自定义时间无法取消, 为啥呢?

    listen("bark", function(){console.log("bark")})  
    mui.fire(plus.webview.currentWebview(), "bark")  

    //Remove the event, donot work!!  
    listen("bark", null)  
    mui.fire(plus.webview.currentWebview(), "bark")  

    function listen(id, event){  
        if(event){  
            window.addEventListener(id, _handler)  
        }else{  
            window.removeEventListener(id, _handler)  
        }  

        function _handler(param){  
            event();  
        }  
    }
2016-02-23 19:41 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

var events = {}  
                listen("bark", function() {  
                    console.log("bark")  
                        //Remove the event                    
listen("bark", null)  
                    mui.fire(plus.webview.currentWebview(), "bark")  
                })  
                mui.fire(plus.webview.currentWebview(), "bark")  
                    //仅支持绑定单个回调,否则需要自己维护一个回调列表  
                function listen(id, event) {  
                    if (event) {  
                        events[id] = event;  
                        window.addEventListener(id, event)  
                    } else {  
                        if (events[id]) {  
                            window.removeEventListener(id, events[id])  
                            delete events[id]  
                        }  
                    }  
                }
  • 云海帆 (作者)

    明白了,多谢

    2016-02-23 20:26

maq

maq

第二次调用 listen() 的时候,里面的 _handler 跟上一次已经不是同一个 function 对象了。

你试试把 function _handler() 的定义移到 listen() 外面,应该就可以了。

maq

maq

listen("bark", function(){console.log("bark")})  
mui.fire(plus.webview.currentWebview(), "bark")  

// good luck :)  
listen("bark", null)  
mui.fire(plus.webview.currentWebview(), "bark")  

var _handler = null;  
function listen(id, event){  
    if(event){  
        _handler = function(param) {  
            event();  
        };  
        window.addEventListener(id, _handler)  
    }else{  
        window.removeEventListener(id, _handler)  
    }  
}

该问题目前已经被锁定, 无法添加新回复