Сообщение от DjDiablo
|
Не выдумывай
|
так не интересно ничего не выдумывать
Недавно адаптировал скрипт для работы в браузере, ну и чтобы работало в IE8, убирал из скрипта NFE, например:
document.addEventListener("click", function callback(event) {
document.removeEventListener("click", callback);
…
});
нужно переделать в:
function callback(event) {
document.removeEventListener("click", callback);
…
}
document.addEventListener("click", callback);
Но это муторно все функции переделывать в FD, иногда имена совпадают, не всегда нужны эти функции в общем скопе и т.д.
arguments.callee
использовать нельзя, потому что весь код в strict режиме исполняется в нормальных браузерах.
Можно облегчить себе жизнь, написав функцию, наподобие
bind
, но выполняющую привязку только для первого аргумента, и в качестве значения этого аргумента должна отправляться ссылка на bound-функцию:
function nfe(targetFunc) {
function boundFunc() {
Array.prototype.unshift.call(arguments, boundFunc);
return targetFunc.apply(this, arguments);
}
return boundFunc;
}
Теперь можно делать так:
document.addEventListener("click", nfe(function (callback, event) {
document.removeEventListener("click", callback);
…
}));
или так:
setTimeout(nfe(function (onTime) {
…
setTimeout(onTime, 100);
}), 100);