EDIT: Мне нужно вызвать одну функцию, которая извлекает данные и перезагружает содержимое страницы. Но это нужно вызывать, когда другая функция извлекает данные (webSql). Я не могу использовать обратный вызов WebSql, поскольку переменные выходят за рамки. Поэтому я создал собственное событие и добавил слушателя во вторую область функций. Поэтому, когда данные извлекаются, я отправляю событие в первой области функции. Теперь проблема, если страница была перезагружена более одного раза, слушатели будут добавляться несколько раз, и все будут вызваны, которые я не хочу.Удалить анонимных прослушивателей событий перед добавлением новых
Мне нужно убедиться, что только одна функция прослушивает пользовательское событие. Сейчас я удаление слушателя, как только его вызывается так:
document.addEventListener("customEvent", function() {
actualCallBack(var1, var2); // Since I need to pass parameters I need to use callBack within an anonymous function.
this.removeEventListener("customEvent", arguments.callee, false);
}, false);
Но проблема анонимная функция будет удалена только после его вызова в первую очередь. Существует возможность прослушивания, добавляя много раз. Как удалить прослушиватели событий перед добавлением нового?
document.removeEventListener("customEvent");
document.addEventListener(...);
я мог удалить его, если переменная функция использовалась вместо этого, но мне нужно, чтобы передать некоторые параметры обратного вызова, поэтому мне нужно использовать анонимные функции.
IIRC, 'cloneNode' клонирует все, кроме прослушивателей событий. Выполнение этого в 'document'-scope может быть веселым, хотя .. – fjdumont
Одним из способов было бы привязать целое событие к пользовательской функции. Затем эта функция может содержать ссылку на обработчик и убедиться, что привязан только один обработчик. Конечно, это требует, чтобы обработчик привязывался только к элементу через эту функцию. –
Я не понимаю вашего объяснения, почему вы должны использовать анонимную функцию. Вот связанный с ним вопрос: http://stackoverflow.com/questions/4386300/javascript-dom-how-to-remove-all-events-of-a-dom-object – basilikum