не может использовать событие onmouseover для опции выбора в IE

Обновленный код:

function getElements()
  {
  var x=document.getElementsByTagName("option");

var el = document.getElementById('selectDept');
el.onmouseover = function( myevent ) {
   // event = event || window.event.srcElement;
if(myevent && myevent.target){
    if ( myevent.target.tagName.toLowerCase() == 'option' ) {
        alert(myevent.target.innerHTML);
    }
}
else if(window.event)
{
   if ( window.event.srcElement.tagName.toLowerCase() != 'select' ) {
        alert('s');
    }

}
};

но все еще не работает в IE.


person MemoryLeak    schedule 21.09.2009    source источник


Ответы (2)


Не можете ли вы по-прежнему установить обработчик события наведения курсора мыши на весь выбор и настроить таргетинг на свойство события, если целью является элемент параметра, выполнить действие X?

var el = document.getElementById('foo')
el.onmouseover = function( event ) {
    event = event || window.event;
    var target = event.target ? event.target : event.srcElement;
    if ( target.nodeName.toLowerCase() === 'option' ) {
        alert('option');
    }
}

Обновленный код:

http://jsbin.com/olusi

person meder omuraliev    schedule 21.09.2009
comment
обновлен с примером псевдокода, я просто набрал его в сообщении, на самом деле я не проверял это. Возможно, вам придется учитывать пузыри с помощью stopPropagation и тому подобного, дайте мне знать, как это происходит. - person meder omuraliev; 21.09.2009
comment
Я думаю, вам нужен event.srcElement в IE, чтобы узнать, какой элемент вызвал событие. msdn.microsoft.com/en-us/library/ ms534638%28VS.85%29.aspx - person scunliffe; 21.09.2009
comment
я искал это, потому что я забыл учесть цель, хотя. - person meder omuraliev; 21.09.2009
comment
Я обновил живой пример... дайте мне знать, если он не работает в IE. - person meder omuraliev; 21.09.2009
comment
событие = событие || окно.событие; для чего это используется? - person MemoryLeak; 21.09.2009

IE не поддерживает события для элемента option. Вы можете попробовать, как говорит @meder, добавить обработчик для родительского выбора, а затем проверить событие, чтобы увидеть, какая опция была наведена.

PS это были известные ошибки в IE6 (о них сообщалось в бета-тестировании IE7 и IE8 - и на сегодняшний день отклонено для исправления) :-(

Может быть, IE9 их поддержит?

person scunliffe    schedule 21.09.2009
comment
Очевидно, что IE9 их не поддерживает! по крайней мере, не в бета-версии с 1 по 16 :( - person Kyle; 16.01.2011