Internet Explorer表示Object不支持此属性或方法

时间:2009-09-02 15:52:44

标签: javascript jquery debugging mootools

这一行是79:

window.addEvent('domready', function(){     
    mySlide = new Fx.Slide('advert');
    mySlide.hide();
});

它也不喜欢这一行:

this.wrapper = new Element('div',
                           {
                              'styles': $extend(
                                                this.element.getStyles('margin'), 
                                                {'overflow': ''}
                                               )
                           })
                .injectAfter(this.element)
                .adopt(this.element);

有谁知道为什么会这样?有谁知道如何解决这一问题?我正在使用jQuery和Mootools ..并且想要一个解决方案。

8 个答案:

答案 0 :(得分:36)

如果你在IE浏览器上登陆,同时拼命搜索IE中出现此错误的原因,请允许我指出另一种可能发生这种情况的方法。希望,我发布此内容的任何行为都会帮助我记住这一点,或者下次遇到此错误时,这个问题会出现在谷歌中。它似乎至少每两年发生一次。

如果你已经命名了一个变量(不确定它是否必须是全局的,我的这个时间)与元素的ID相同,这可能会显示出来。例如:

<div id="foo">
</div>
<script type="text/javascript">
    var foo = 1; < --Object doesn 't support this property or method!!
</script>

答案 1 :(得分:3)

你是否在文件中的这一特定行之前包含了jQuery / mooTools?在我看来,在包含它所依赖的框架之前,你已经包含了一个插件或其他javascript。我假设您在noConflict()模式下也使用jQuery,因为您同时使用jQuery和mooTools。

答案 2 :(得分:3)

关于变量名称的早期答案的

+1。这在IE8中:

title = button.attr('title'); <-- Object doesnt support this method

$title = button.attr('title'); <-- OK!

答案 3 :(得分:0)

如果您尝试为样式属性指定无效值,则通常会在IE中出现此错误。如果您使用的是IE8并且已经启用了在工具 - >选项 - >高级下启用javascript调试,那么您可以尝试调试它,看看哪个属性赋值引发了此错误,然后尝试纠正此问题。

答案 4 :(得分:0)

如果您在变量列表中没有逗号,也会发生这种情况,例如下面的'f'变量:

var a = 'aaaa',
    f = 'ffff'
    b = someObject.attribute;

答案 5 :(得分:0)

只是对话的快速补充。

在某些情况下(想到video.js / bigvideo.js)你需要在jQuery或jQuery UI之前运行modernizr.js作为你的第一个脚本。事情清理干净。

答案 6 :(得分:0)

(MooTools的)

我的代码是这样的:

var cancel; 
//... bla bla
cancel = form.elements[i]; //cancel is now a <button>; no Id, unique on the page
cancel.addEvent('click', function(e) {...});

我在cancel.AddEvent()获得了OP的例外。为我修复的是将其重写为$(cancel).addEvent()

多么可怕的浏览器。

答案 7 :(得分:-1)

看起来你并没有真正利用jQuery。我不会说mooTools,所以我可能不会完全正确,但我会尝试这样的事情:

jQuery(document).ready( function() {
    //you could convert this to jQuery too, of course
    mySlide = new Fx.Slide('advert');
    mySlide.hide(); 
} );

jQuery(this).wrap( '<div class="overflow-wrapper"></div>' )
            .parent('.overflow-wrapper').css('overflow', '' );