Определение источника события в Mozilla 13
Добрый вечер!
Для определения источника события использую следующий код: function funcName(event){ var event = (event)? event : window.event, target = (event.target)? event.target : event.srcElement; }Далее по коду провожу манипуляции с источником события. И проблем не возник в Chrome 20, Opera 12,Safari 5, IE7-9. Однако, Mozilla 13 отличилась и выдаёт в консоль, что target underfined. Не могли бы вы подсказать почему наблюдается такое поведение и как его избежать? Заранее благодарен! |
ваш код можно сократить
var e = event || window.event; var target = e && e.target || event.scrElement. откуда вы вызывает функцию(больше кода покажите)? |
Цитата:
var target = event ? event.target : window.event.srcElement; Цитата:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta content="text/html; charset=windows-1251" http-equiv="Content-Type"> <script type="text/javascript"> document.onclick = function(event) { var target = event ? event.target : window.event.srcElement; alert(target.tagName); }; </script> </head><body> <div>div</div> <span>span</span><br> <font>font</font> </body></html> |
Цитата:
var target = e&&e.target || event.srcElement; |
Цитата:
|
Функция вызывается из addEventListener. так в остальных-то браузерах работает. мне не понятно почему в Firefox данная проблема возникла.
Пысы: Спасибо за советы по сокращению. |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta content="text/html; charset=windows-1251" http-equiv="Content-Type"> <script type="text/javascript"> document.addEventListener('click', function(event) { var target = event ? event.target : window.event.srcElement; alert(target.tagName); }, false); </script> </head><body> <div>div</div> <span>span</span><br> <font>font</font> </body></html> Всё работает :) |
Раед, я также обескуражен.
var elementLink = document.getElementById("elementID"); if(elementLink.addEventListener){ elementLink.addEventListener("mousedown", funcName); } else { elementLink.attachEvent("onmousedown", funcName); } function funcName(event){ var event = (event)? event : window.event; var target = (event.target)? event.target : event.srcElement; //так как источник события изображение var oldSrc = target.src; .......... } Работает везде, кроме Mozilla 13 (target - underfined) |
LeD4eG,
HTML покажите |
событие возникает в блоке при наведении
<a href="#"><img src="..."/></a> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta content="text/html; charset=windows-1251" http-equiv="Content-Type"> <script type="text/javascript"> function f(event) { var target = event ? event.target : window.event.srcElement; console.log(target); alert(target.src); } document.addEventListener('mousedown', f, false); </script> </head><body> <a href="#"><img src="http://javascript.ru/forum/image.php?u=17648&dateline=1338577823"></a> </body></html> Запустите в Firefox. Всё работает :D |
Раед, ошибка в моём коде. всё верно. я что-то не досмотрел. ошибка заключалась в том, что event.target существует при условии существования event, а не event.target. Вот и получается, что остальные браузеры к ней просто "проще отнеслись".
|
Часовой пояс GMT +3, время: 11:26. |