Как установить событие onmousedown для динамически создаваемого div в IE?

У меня есть (javascript) инструмент, который динамически создает div, когда пользователь нажимает на экран.

_newDiv = document.createElement('div');

Теперь, после создания _newDiv, я хочу назначить ему событие onmousedown.

_newDiv.onmousedown = function(event) { onNewDivMouseDown(event); };

Это отлично работает в Firefox, но не работает в IE 8. Есть ли какой-нибудь хак, который я могу использовать, чтобы решить эту проблему?

Спасибо!

2 ответа

Решение

Задача решена!

Оказывается, из-за того, что динамически созданный div был сделан прозрачным с помощью progid:DXImageTransform, IE не захватил событие onmousedown для указанного div. Проблема была решена путем вставки

background-image:url(/none)

в таблице стилей div. По какой-то причине это работает, даже если вставлено несуществующее изображение, поэтому я использовал это.

До IE9, event объект не был передан обработчику. Вместо этого это глобальная переменная. Поэтому традиционная идиома:

function handler(event) {
  event = event || window.event;
  // ...
}

Итак, в вашем случае:

_newDiv.onmousedown = function(event) {
    onNewDivMouseDown(event || window.event);
};
Другие вопросы по тегам