alert
вызывает всевозможные проблемы, особенно в IE, но, честно говоря, и в других браузерах. Я бы избежал этого.
Ваш пример работает нормально, если вы не используете alert
, а вместо этого используете другой способ показать, что события были получены:
window.onload = function() {
var el = document.getElementById("text");
var but = document.getElementById("but");
el.onbeforedeactivate = function() { display('out') };
but.onclick = function() { display('click') };
function display(msg) {
var p = document.createElement('p');
p.innerHTML = msg;
document.body.appendChild(p);
}
}
Обновленная скрипка
Протестировано на IE6, 7 и 8. С вашим оригиналом я получаю тот же результат, что и вы (только предупреждение "out"). С обновлением я вижу, что оба события действительно происходят.