我正在PhoneGap中編寫一個移動應用程序,但是當Web上有範圍上下文更改時,Webkit及其從事件列表中刪除事件偵聽器的功能似乎存在問題回調。下面是一個例子:帶有不同上下文的回調的removeEventListener()
Function.prototype.bind = function(scope) {
var fn = this;
return function() {
fn.apply(scope, arguments);
};
};
a = function(){};
a.prototype.tmp = function(e){
var tmp = ddd.q('#tmp');
tmp.className = 'active';
tmp.addEventListener('webkitAnimationEnd',this.tmp2.bind([this,tmp]),false);
}
a.prototype.tmp2 = function(e){
this[1].removeEventListener('webkitAnimationEnd',this[0].tmp2.bind([this[0],this[1]]),false);
this[1].className = 'inactive;
var t2 = ddd.q('#tmp2');
t2.className = 'active';
t2.addEventListener('webkitAnimationEnd',this[0].setStart.bind([this,t2]),false);
};
現在,在上面的代碼中,事件偵聽器永遠不會脫落,並且無論何時回調被調用,事件偵聽器列表變得相當大 - 這表現在網絡督察。有關如何在使用可更改函數作用域的回調函數完成時刪除事件偵聽器的任何想法?
您是否正確使用'bind'?它應該是'.bind(this,arg1,arg2,...)'所以你避免把'this'作爲一個數組? –