2015-09-07 3 views
1

У меня есть код ниже, и «alert» не происходит при щелчке по указанному элементу. Но addEventListener, похоже, поддерживается IE, который я использую (версия 10), когда я проверил с другой простой программой, и он работал нормально.addEventListener не запускается при нажатии в IE

var iframe1 = document.getElementsByName('frStatus')[0]; 
var innerDoc = (iframe1.contentDocument) ? iframe1.contentDocument : iframe1.contentWindow.document; 
innerDoc.getElementById('slow_jquery').innerHTML = slowjquerycount; 
innerDoc.getElementById('slow_jquery').style.color="red"; 
console.log("doc"+document.getElementById("slow_jquery")); 
innerDoc.getElementById('slow_jquery').addEventListener("click", function(){ 
     alert("event listener"); 
}); 

Соответствующий HTML является

<span id="slow_jquery" style="cursor:pointer;color:green;">0</span> 

Когда приведенный выше код выполняется & щелчке элемента, ошибка не генерируется, без предупреждения на консоли, и предупреждающее сообщение не отображается. Что-то не так с кодом? Любая помощь будет очень полезной.

Заранее спасибо.

Примечание: - Уже пытался использовать z-index, чтобы гарантировать, что элемент не скрыт за другим. - Код работает отлично в Chrome. - Убедитесь, что IE-10 поддерживает addEventListener.

+0

Ваше понимание событий нарушается. Вы пытались нажать кнопку, прежде чем отправлять вопрос? –

+0

Почему я не хочу? Я сделал – Anu145

+0

«Выполнено», я имел в виду onclick! Я знаю, что прослушиватель событий в «клике» должен делать – Anu145

ответ

2

Попробуйте element.onclick=function вместо регистрации 'click' прослушиватель событий.

+0

Вы имеете в виду свойство HTML, свойство объекта или событие старого стиля? –

+0

Это сработало! Спасибо – Anu145

+0

@ Anu145 вы можете попробовать добавить третий аргумент со значением 'false' к вызову' addEventListener', по IE ​​он не является обязательным –

1

Вы пытаетесь связать прослушиватель с динамически добавленным элементом. Это легко в jQuery с .on(). В простой JS это немного сложнее: вам нужно будет использовать делегирование событий.

Убедитесь, что аргумент querySelector является элементом, который существует при загрузке и не добавляется динамически! В этом случае я предполагаю, что iframe1 является таким элементом.

document.querySelector(iframe1).addEventListener("click", function(event) { 
    if (event.target.id === "slow_jquery") { 
    alert("event listener"); 
    } 
}); 

Также см этот answer:

предостережений! В примере Fiddle используется только код для совместимых со стандартами браузеров (то есть IE9 + и почти каждая версия для всех остальных). Если вам нужно поддерживать «старый IE» attachEvent, тогда вам также захочется предоставить свои собственные пользовательская обертка вокруг собственных функций. (Есть много хороших обсуждения там об этом, мне нравится решение Николас Zakas обеспечивает в своей книге Профессиональный JavaScript для веб-разработчиков.)

+0

Пробовал все из них, но не работал Вместо этого работал элемент element.onclick. благодаря – Anu145

Смежные вопросы