примеры т.е. obj.attachEvent () - PullRequest
       15

примеры т.е. obj.attachEvent ()

1 голос
/ 20 апреля 2011

Кто-нибудь знает, как работает obj.attachEvent ie?

Я попробовал несколько примеров, но они не работают. Также это совместимо с ie7?

Что я пробовал это:

var onload = function( ) {
        console.log("intercepting: " + this.status + " " + this.responseText);
    };

if($.browser.msie){
   console.log("it's IE...");
   this.attachEvent("load", onload);
}

Все выше в XMLHtppRequest.

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

Для attachEvent необходимо добавить к имени события префикс "on", например,

this.attachEvent("onload", onload);

Это отличается от DOM Events 'addEventListener, что требует пропуска "on".

Как указал Марсель, для XMLHttpRequest вам нужно вместо этого связать с onreadystatechange и проверить свойство readyState внутри обработчика.onload не поддерживается для XMLHttpRequest.

С другой стороны, вам следует избегать проверки браузера и проверки поддержки функций.Internet Explorer 9 поддерживает addEventListener, например:

var onreadystatechange = function( ) {
    if (this.readyState == 4)
        console.log("intercepting: " + this.status + " " + this.responseText);
};

if(!this.addEventListener && this.attachEvent){
   console.log("it's IE<9...");
   xhr.attachEvent("onreadystatechange", onreadystatechange);
}
else
    // use addEventListener

В действительности вы бы не использовали attachEvent или addEventListener для объекта XHR;Я сомневаюсь, что IE7 и ниже будут хороши с этим, так что вы просто привязали бы к свойству события напрямую:

xhr.onreadystatechange = function () {
    if (this.readyState == 4)
        console.log("intercepting: " + this.status + " " + this.responseText);
}
2 голосов
/ 20 апреля 2011

Вы, вероятно, хотите присвоить эту функцию xhrObject.onreadystatechange.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...