CGI, по сути, передает запрос любому интерпретатору , настроенному на веб-сервере - это может быть Perl, Python, PHP, Ruby, C почти что угодно. Perl был самым распространенным в те дни, поэтому вы часто видите его в отношении CGI.
CGI не умер. На самом деле большинство крупных хостинговых компаний используют PHP как CGI, а не mod_php, потому что он предлагает конфигурацию на уровне пользователя и некоторые другие вещи, в то время как он медленнее, чем mod_php. Ruby и Python также обычно запускаются как CGI. Ключевым отличием здесь является то, что серверный модуль работает как часть реального серверного программного обеспечения - где, как и в случае с CGI, он полностью находится вне сервера. Сервер просто использует модуль CGI, чтобы определить, как передавать и получать данные внешнему интерпретатору.
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';
}
}
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';
}
}
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, так популярны.
У вас классическая кроссбраузерная проблема с обработкой событий. Я бы посоветовал использовать такую библиотеку, как Prototype , JQuery , YUI или MooTools , чтобы справиться с этим намного проще и понятнее. . Проблема в том, что IE не передает объект события. Вместо этого его можно найти как глобальный объект.