Сообщение от Vit
|
А почему?
|
Потому что когда Вы каждый раз пишете
el.onclick = function(){ ..., Вы каждый раз
убиваете котёнка создаёте новую функцию. А делая, как я показал, Вы используете одну каждый раз.
Сообщение от devote
|
да я только что проверил в локалке.. ИЕ6 в попе, остальные норм.
|
Я не пишу под него, как и под FF 3.6. Я в стаде
.
Сообщение от Vit
|
И как правильно описать handler(), дабы он входил в состав объекта, и видел OnOk и OnFail?
|
Самое простое - записать их в объект какой-нибудь, а его уже сохранить в замыкании.
http://jsfiddle.net/yPKkJ/2/
Боялся, что IE не понравится custom свойство id ... но, вроде, пережевал.
(function() {
var running = {};
function noop() {}
function handler() {
if (this.readyState === 4) {
(running[this.id][this.status === 200 ? "onsuccess" : "onerror"] || noop).call(this);
delete running[this.id]; // убиваем сами обработчиков. не нужны уже.
}
}
window.send = function(url, method, data, onsuccess, onerror) {
var req = new XMLHttpRequest();
req.open(method, url, true);
req.onreadystatechange = handler;
req.send(data);
req.id = (Math.random() * 1e5 | 0).toString(32); // случайна последовательность англ. букв и цифр.
running[req.id] = { // сохраняем, пока не понадобятся
"onsuccess": onsuccess,
"onerror": onerror
};
}
})();