Javascript перед деактивировать событие - PullRequest
0 голосов
/ 23 декабря 2010

Только Internet Explorer.

<input type="button" id="but" value="button2"/>
<textarea id="text" cols="40" rows="20"></textarea>

window.onload = function() {
  var el = document.getElementById("text");
  var but = document.getElementById("but");

  el.onbeforedeactivate = function() { alert('out') };
  but.onclick = function() { alert('click') };
}

Когда я нажимаю кнопку внутри текстовой области (фокус на текстовой области), я ожидаю, что обе функции сработают, но этого не происходит.

Почему? Онлайн пример

1 Ответ

3 голосов
/ 23 декабря 2010

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"). С обновлением я вижу, что оба события действительно происходят.

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