MSIE и addEventListener проблема в JavaScript?

Самое эффективное должно использовать StringBuilder, как так:

StringBuilder sb = new StringBuilder();
sb.Append("string1");
sb.Append("string2");
...etc...
String strResult = sb.ToString();

@jonezy: Строка. Concat прекрасен, если у Вас есть несколько мелочей. Но если Вы свяжете мегабайты данных, Ваша программа, вероятно, заправит.

84
задан Jon Seigel 16 July 2010 в 02:20
поделиться

3 ответа

В IE вы должны использовать attachEvent , а не стандартный addEventListener .

Обычной практикой является проверка наличия addEventListener ] доступен и используйте его, в противном случае используйте attachEvent :

if (el.addEventListener){
  el.addEventListener('click', modifyText, false); 
} else if (el.attachEvent){
  el.attachEvent('onclick', modifyText);
}

Вы можете создать функцию для этого:

function bindEvent(el, eventName, eventHandler) {
  if (el.addEventListener){
    el.addEventListener(eventName, eventHandler, false); 
  } else if (el.attachEvent){
    el.attachEvent('on'+eventName, eventHandler);
  }
}
// ...
bindEvent(document.getElementById('myElement'), 'click', function () {
  alert('element clicked');
});

Вы можете запустить пример приведенного выше кода здесь .

Третий аргумент addEventListener - useCapture ; если истинно, это означает, что пользователь желает инициировать захват события .

185
ответ дан 24 November 2019 в 08:27
поделиться

Internet Explorer (IE8 и ниже) не поддерживает addEventListener (...) . У него есть собственная модель событий, использующая метод attachEvent . Вы можете использовать такой код:

var element = document.getElementById('container');
if (document.addEventListener){
    element .addEventListener('copy', beforeCopy, false); 
} else if (el.attachEvent){
    element .attachEvent('oncopy', beforeCopy);
}

Хотя я рекомендую избегать написания собственной оболочки обработки событий и вместо этого использовать среду JavaScript (например, jQuery , Dojo , MooTools) , YUI , Prototype и т. Д.) И избегайте создания исправления для этого самостоятельно.

Кстати, третий аргумент в модели W3C для events имеет отношение к разнице между всплывающими и захватывающими событиями . Практически в любой ситуации вы захотите обрабатывать события по мере их появления, а не в момент их захвата. Это полезно при использовании делегирования событий для таких вещей, как события «фокус» для текстовых полей, которые не всплывают.

5
ответ дан 24 November 2019 в 08:27
поделиться

Проблема в том, что IE не имеет стандартного метода addEventListener . IE использует собственное attachEvent , которое делает почти то же самое.

Хорошее объяснение различий, а также 3-го параметра можно найти в quirksmode .

0
ответ дан 24 November 2019 в 08:27
поделиться
Другие вопросы по тегам:

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