IE e.target.id не работает
document.click = check;
function check(e)
{
var obj = document.getElementById('calendar_widget');
if (obj != 'null')
{
if (e.target.id != 'show_calender')
obj.style.display='none';
}
}
Ошибка в Internet Explorer: e.target.id - undefined.
Ответы
Ответ 1
IE не поддерживает целевое свойство, вместо этого они используют srcElement.
Изменить:
if (e.target.id != 'show_calender')
в
if ((e.target || e.srcElement).id != 'show_calender')
Вам также может потребоваться добавить это в начало вашей функции:
if (!e) e = window.event
Ваш последний код будет выглядеть так:
function check(e) {
if (!e) e = window.event;
var obj = document.getElementById('calendar_widget');
if (obj != 'null') {
if ((e.target || e.srcElement).id != 'show_calender')
obj.style.display='none';
}
}
Ответ 2
Internet Explorer не передает объект события обработчику событий - вместо этого он устанавливает его как свойство окна. Кроме того, он использует srcElement
вместо target
. Попробуйте
document.click = check;
function check(e)
{
var target = e ? e.target : window.event.srcElement;
var obj = document.getElementById('calendar_widget');
if (obj != 'null')
{
if (target.id != 'show_calender')
obj.style.display='none';
}
}
Ответ 3
IE не передает объект события в качестве параметра, к объекту события обращается как глобальный идентификатор с именем event
. Также он не использует термин target, вместо этого он использует srcElement
.
Следовательно, эквивалентный код для IE: -
function check()
{
var obj = document.getElementById('calendar_widget');
if (obj != 'null')
{
if (event.srcElement.id != 'show_calender')
obj.style.display='none';
}
}
По этой причине такие Javascript-фреймворки, как JQuery, настолько популярны.
Ответ 4
У вас есть классическая проблема обработки кросс-браузера. Я бы посоветовал использовать библиотеку, такую как Prototype, JQuery, YUI или MooTools для более удобного и простого решения. Проблема в том, что IE не передает объект события. Вместо этого он может быть найден как глобальный объект.