DOMContentLoaded обычно запускается только один раз для каждого документа, поэтому я подозреваю, что вы также ловите события из фреймов страницы.Невозможно точно сказать с предоставленной информацией.
Однако я могу сказать, почему вы не можете удалить слушателя.function(e) { Test.f(); }
является закрытием, каждый раз, когда этот код запускается, создается новая функция.Таким образом, функция, которую вы добавляете как слушатель, отличается от функции, которую вы удаляете.Например, попробуйте следующее:
alert(function(e) { Test.f(); } == function(e) { Test.f(); });
Чтобы избежать этой проблемы, вам необходимо запомнить свое закрытие, например:
var listener = function(e)
{
window.removeEventListener("DOMContentLoaded", listener, false);
Test.f();
}
window.addEventListener("DOMContentLoaded", listener, false);