У меня есть проблема, которая только начала происходить под ie8. мой код работал некоторое время и все еще отлично работает в firefox, но по какой-то причине прототип просто перестал вызывать мои прослушиватели событий для dom:loaded
.
я прикрепляю их через document.observe("dom:loaded", callback);
после некоторой отладки (я ненавижу отладчик ie!!!) я пришел к выводу, что прототип fireContentLoadedEvent
(ln 4102) вызывается задолго до загрузки dom (почти сразу после document.write("<script...")
).
fireContentLoadedEvent
вызывается из обработчика, когда !document.addEventListener
т.е. (см. строку Prototype.js 4125)
...
if (document.addEventListener) {
...
} else {
document.write("<script id=__onDOMContentLoaded defer src=//:><\/script>");
$("__onDOMContentLoaded").onreadystatechange = function() {
if (this.readyState == "complete") {
this.onreadystatechange = null;
fireContentLoadedEvent();
}
};
}
...
есть ли у кого-нибудь, кто понимает этот механизм, какие-либо идеи относительно того, почему он может срабатывать преждевременно?