我是这个领域的新人,我不知道为什么会出错:
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工作得很好,即edge,chrome,FF但我需要在ie7中工作,而我在朋友google上找不到类似的例子。
先谢谢。
答案 0 :(得分:0)
问题在于对元素的访问:
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;
谢谢大家。