detachEvent не работает с именованными встроенными функциями

Сегодня я столкнулся с проблемой в IE8 (обратите внимание, что мне нужна только поддержка IE), которую я не могу объяснить: detachEvent не будет работать при использовании обработчика именованных анонимных функций.

document.getElementById('iframeid').attachEvent("onreadystatechange", function onIframeReadyStateChange() {
    if (event.srcElement.readyState != "complete") { return; }

    event.srcElement.detachEvent("onreadystatechange", onIframeReadyStateChange); 

    // code here was running every time my iframe's readyState 
    // changed to "complete" instead of only the first time
});

В конце концов я понял, что изменение onIframeReadyStateChange для использования arguments.callee (которого я обычно избегаю) вместо этого решило проблему:

document.getElementById('iframeid').attachEvent("onreadystatechange", function () {
    if (event.srcElement.readyState != "complete") { return; }

    event.srcElement.detachEvent("onreadystatechange", arguments.callee);    

    // code here now runs only once no matter how many times the 
    // iframe's readyState changes to "complete"
});

Что дает?! Разве первый фрагмент не должен работать нормально?

Ответы на вопрос(1)

Ваш ответ на вопрос