Сокращаю скрипт: PHP: function _onload() { window.onmouseover = _onmouseover; } function _onmouseover(event) { event = (event) ? event : ((window.event) ? event : null); var object_id = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); } С таким скриптом В ИЕ даже не заходит в функцию! Меняем window.onmouseover = _onmouseover; на window.onmouseover = _onmouseover(window.event); + Isis помогал решить мне похожую проблему в /thread62540.html Добавил изменения PHP: function _onload() { if (navigator.appName !='Microsoft Internet Explorer') window.onmouseover = _onmouseover(window.event); else window.onmouseover = _onmouseover; } function _onmouseover(event) { if (navigator.appName !='Microsoft Internet Explorer') { event = (event) ? event : ((window.event) ? event : null); var object_id = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); } else { var target = null; if (window.event) { event = window.event; target = event.srcElement; } else { event = null; target = event.target; } var object_id = (target) ? target.id : null; } } после изменений: в функцию заходит, но target is null в Mozilla же все работает... Вот такой вот вопрос
Код несколько неверный, но это не важно. Обрати внимание на эту строку: Code: window.onmouseover = _onmouseover(window.event); Важно понять, что происходит. Здесь свойству onmouseover объекта window присваивается значение, которое возвращает функция _onmouseover при запуске с параметром window.event. В данном случае возвращается void undefined. И это происходит только один раз.
PHP: function getEventTarget(e) { var e = e || window.event; var targ = e.target || e.srcElement; if (targ.nodeType == 3) { // боремся с Safari targ = targ.parentNode; } return targ; }
А можно подробнее плз то есть нужно.. PHP: function _onmouseover(event) { //event = (event) ? event : ((window.event) ? event : null); //var object_id = (event.target) ? event.target.id : ((event.srcElement) ? event.srcElement.id : null); var object_id = getEventTarget(event); alert(object_id); }
Код не мой, я вообще изначально бы по другому делал... PHP: function _onload() { window.onscroll = _onscroll; window.onmouseover = _ onmouseover; window.onmouseout = _onmouseout; } В Мазилле при движении мыши вызывються _onmouseover и _onmouseout, но в ИЕ это не работает... Если верхний мой вариант не правильный PHP: window.onmouseover = _ onmouseover(); то как поступить?
Тема не актуальна, я переделал саму логику... Просто интересно знать на будущее где в коде нужно применять функцию getEventTarget()
Пример: Code: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.0//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd"> <html> <head> <title>Пример.</title> <style type="text/css"> #dummy { border: #AAA solid 1px; background: #EEE; width: 200px; height: 150px; } </style> <script type="text/javascript"> var colors = ['#7E7', '#ADF', '#FA0', '#AAF', '#EEE']; function addEvent(o, e, f) { if(o.addEventListener) { o.addEventListener(e, f, false); } else if(o.attachEvent) { o.attachEvent('on' + e, f); } }; addEvent(window, 'load', function() { var node = document.getElementById('dummy'); /* В Mozilla ссылка на объект event передаётся параметром в функцию-обработчик. В IE существует глобальный объект window.event Opera великодушно поддерживает и то, и другое. */ addEvent(node, 'mouseover', function(e) { // если "e" не определено - используем window.event: e = e || window.event; // Аналогично: var t = e.target || e.srcElement; // Делаем что-нибудь: colors.push(t.style.backgroundColor = colors.shift()); }); }); </script> </head> <body> <div id="dummy"></div> </body> </html>