Есть ли в теге body body событие onblur? - PullRequest
4 голосов
/ 04 августа 2011

Я пытался привязать событие onblur к тегу <body>, и оно работает в IE 6/8.

Однако, когда я обращаюсь к w3schools , получаетсячто у тега <body> нет события onblur.

Может кто-нибудь объяснить это?

Ответы [ 3 ]

3 голосов
/ 04 августа 2011

Спецификация HTML4 не содержит атрибута onblur.

С другой стороны, HTML5 черновик .

2 голосов
/ 04 августа 2011

body:onblur является частью спецификации HTML5, но не является частью спецификации HTML4.

Если вы хотите поддерживать браузеры HTML4, почему бы не использовать window:onblur?В большинстве случаев у вас будет такая же функциональность.

0 голосов
/ 04 августа 2011

Я бы никогда не стал полагаться на упомянутый вами источник.Проблема в том, что MSIE запускает событие blur для почти каждого элемента, включая <body.Там, где большинство других реализаций делают точную противоположность.

Это может помочь, если вы явно укажите tabIndex для body element, например:

document.body.tabIndex = 1;
document.body.onblur = function() {
    alert('body blur');
};

Это работает для меня на FF5,Тем не менее, я не уверен, сколько версий из FF и сколько реализаций поддерживают этот «хитрый» обходной путь.

Следующий логический вопрос: зачем вам запускать событие body blur?Единственная разумная вещь, о которой я могу думать, это то, что вы хотите знать, когда кто-то покидает вашу страницу?Если это так, я бы порекомендовал вместо самого тела смотреть window.

window.onblur = function() {
    alert('window blur');
}
...