Как установить событие onmousedown для динамически создаваемого div в IE? - PullRequest
0 голосов
/ 10 сентября 2011

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

_newDiv = document.createElement('div');

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

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

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

Спасибо!

Ответы [ 2 ]

2 голосов
/ 11 сентября 2011

Проблема решена!

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

background-image:url(/none)

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

0 голосов
/ 10 сентября 2011

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

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

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

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