attachEvent is a deprecated function used in older versions of Internet Explorer.
For modern browsers use this instead.
el.addEventListener(evt,func,false);
See documentation here
You could also create a function which checks which function to use
function addListener(el, event, func){
if (el.addEventListener) {
el.addEventListener(event, func, false);
}
else {
el.attachEvent("on"+event, func);
}
}
Then you can attach your event by doing this:
var element = document.getElementById('myElement');
addListener(element, 'click', function(){
alert('You have clicked!');
});
If you are unable to to this then perhaps a polyfill will work instead. Try to insert this somewhere:
if(!document.attachEvent){
Object.prototype.attachEvent=function(event,func){
this.addEventListener(event.split('on')[1], func);
}
}
Hope this helps
attachEvent — это устаревшая функция, используемая в более старых версиях Internet Explorer.
Для современных браузеров используйте это вместо этого.
el.addEventListener(evt,func,false);
См. документацию здесь
Вы также можете создать функцию, которая проверяет, какую функцию использовать
function addListener(el, event, func){
if (el.addEventListener) {
el.addEventListener(event, func, false);
}
else {
el.attachEvent("on"+event, func);
}
}
Затем вы можете прикрепить свое событие, выполнив следующее:
var element = document.getElementById('myElement');
addListener(element, 'click', function(){
alert('You have clicked!');
});
Если вы не можете этого сделать, возможно, вместо этого будет работать polyfill. Попробуйте вставить это где-нибудь:
if(!document.attachEvent){
Object.prototype.attachEvent=function(event,func){
this.addEventListener(event.split('on')[1], func);
}
}
Надеюсь, что это поможет
Проблема в том, что вы также стерли настройки своего сайта для режима совместимости.
Чтобы предотвратить проблемы совместимости с добавлением события, вы должны использовать какой-то базовый анализ браузера (на основе функций), а затем применить соответствующую функцию события присоединения (для обратной совместимости со старыми версиями Internet Explorer):
// Modern browsers
if (typeof window.addEventListener === 'function') {
window.addEventListener('load', CloseCtrlLanceurApplication, false);
}
// Internet Explorer
else {
window.attachEvent('onload', CloseCtrlLanceurApplication);
}
В более старых версиях IE attachEvent
используется для присоединения обработчика событий для некоторого события к некоторому элементу. Но согласно обновлению здесь , начиная с IE11, attachEvent
устарел, и вместо него следует использовать addEventListener
.
IE поддерживает addEventListener
только в IE9 и выше. Поэтому, если вам все еще нужна поддержка IE8, я предлагаю вам использовать некоторую кроссбраузерную библиотеку, такую как jQuery, для привязки обработчиков событий вместо ванильного javascript.
Поскольку вы уже используете jQuery, вы можете привязать события, как показано ниже
$('#yourElement').on('click', function(){
// do something when you click on yourElement
});
person
Arkantos
schedule
19.03.2015
comment
с использованием события щелчка jQuery я решил свою проблему. вы сэкономите мне много времени. Благодарность
— person Naitik; 19.03.2015
comment
Рад помочь
— person Arkantos; 19.03.2015
#javascript
#javascript
Вопрос:
Я новичок в этой области, и я не знаю, почему это неправильно:
if (this.trigger.addEventListener) {
this.trigger.addEventListener(this.eventtype, function (ev) {
ev.stopPropagation();
ev.preventDefault();
if (self.isMenuOpen) {
self._closeMenu();
document.removeEventListener(self.eventtype, self.bodyClickFn);
}
else {
self._openMenu();
document.addEventListener(self.eventtype, self.bodyClickFn);
}
});
} else {
this.trigger.attachEvent('on' this.eventtype, function (ev) {
ev.stopPropagation();
ev.preventDefault();
if (self.isMenuOpen) {
self._closeMenu();
document.detachEvent('on' self.eventtype, self.bodyClickFn);
}
else {
self._openMenu();
document.attachEvent('on' self.eventtype, self.bodyClickFn);
}
});
addeventlistener отлично работает в ie edge, Chrome, FF, но мне нужно, чтобы это работало в ie7, и я не нахожу похожего примера у моего друга Google.
Комментарии:
1. Что такое
this.trigger
?2. это объект, который открывает меню
3. «объект» недостаточно конкретен. Все является «объектом» (кроме примитивов)
4. извините. это кнопка.
5. И вы уверены в этом? Если вы
alert(this.trigger.nodeName)
это сделаете, вы получитеBUTTON
?
Ответ №1:
проблема заключалась в доступе к элементу:
if (msieversion() <= 7) {
this.trigger = document.getElementById('t123');
this.menu = document.getElementById('t456');
} else {
this.trigger = this.el.querySelector('a.gn-icon-menu');
this.menu = this.el.querySelector('nav.gn-menu-wrapper');
}
а методы ev.stopPropagation();
и ev.preventDefault(); не поддерживаются ie7. правильный путь:
(ev.stopPropagation) ? ev.stopPropagation() : ev.cancelBubble=true ;
(ev.preventDefault) ? ev.preventDefault() : ev.returnValue = false;
спасибо всем.