Здравствуйте.
Читаю книгу по JS. В книге есть пример написания метода проверки загружена дом модель или нет.
var $ = function() {};
$.prototype.onDomReady = function(callback){
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded", callback, false);
} else {
if(document.body && document.body.lastChild){
callback();
} else {
return setTimeout(arguments.callee, 0);
}
}
}
$ = new $();
$.onDomReady(function() {
alert("The DOM is ready!");
});
Слегка изменил код функции $.prototype.onDomReady:
$.prototype.onDomReady = function ( callback ) {
if ( document.body && document.body.lastChild ) {
callback();
}
else {
alert ( "settimeout" );
return setTimeout ( arguments.callee, 100 );
}
}
Открывая страницу в FireFox, после одного или более alert "settimeout", FireBug выдает ошибку, что callback не является функцией, IE так же выдает ошибку, что необходим объект.
Не понимаю, почему в таймер не передается аргумент в виде ссылки на функцию callback?