错误0x800a01b6 - 对象不支持属性或方法' attachEvent'

时间:2014-06-27 16:40:04

标签: 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工作得很好,即edge,chrome,FF但我需要在ie7中工作,而我在朋友google上找不到类似的例子。

先谢谢。

1 个答案:

答案 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;

谢谢大家。