IE e.target.id не работает

CGI, по сути, передает запрос любому интерпретатору , настроенному на веб-сервере - это может быть Perl, Python, PHP, Ruby, C почти что угодно. Perl был самым распространенным в те дни, поэтому вы часто видите его в отношении CGI.

CGI не умер. На самом деле большинство крупных хостинговых компаний используют PHP как CGI, а не mod_php, потому что он предлагает конфигурацию на уровне пользователя и некоторые другие вещи, в то время как он медленнее, чем mod_php. Ruby и Python также обычно запускаются как CGI. Ключевым отличием здесь является то, что серверный модуль работает как часть реального серверного программного обеспечения - где, как и в случае с CGI, он полностью находится вне сервера. Сервер просто использует модуль CGI, чтобы определить, как передавать и получать данные внешнему интерпретатору.

18
задан Greg 17 July 2009 в 13:19
поделиться

4 ответа

IE не поддерживает свойство target, вместо него используется 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';
    }
}
40
ответ дан 30 November 2019 в 06:29
поделиться

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';
    }
}

5
ответ дан 30 November 2019 в 06:29
поделиться

IE не передает объект события в качестве параметра, доступ к объекту события осуществляется как глобальный идентификатор, называемый событие . Также он не использует термин 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, так популярны.

2
ответ дан 30 November 2019 в 06:29
поделиться

У вас классическая кроссбраузерная проблема с обработкой событий. Я бы посоветовал использовать такую ​​библиотеку, как Prototype , JQuery , YUI или MooTools , чтобы справиться с этим намного проще и понятнее. . Проблема в том, что IE не передает объект события. Вместо этого его можно найти как глобальный объект.

2
ответ дан 30 November 2019 в 06:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: