Подтвердить что ты не робот

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.

4b9b3361

Ответ 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 не передает объект события. Вместо этого он может быть найден как глобальный объект.