Javascript IE9中的Jquery错误

Javascript IE9中的Jquery错误,javascript,jquery,jquery-plugins,internet-explorer-9,Javascript,Jquery,Jquery Plugins,Internet Explorer 9,我正在使用Jquery 1.8.0创建一个横幅旋转器插件,我的代码在Firefox和chrome中可以正常工作,但在IE9中有时会不可思议地无法正常工作,没有明显的原因。我的意思是,横幅不会出现,也不会出现错误。它根本就不在那里 因此,我在代码中添加了一些警报(更改为console.log),以跟踪代码失败的地方,我想我找到了失败的地方 页面上的html代码: <div class="content-top"> <div id="bannerRotator">&l

我正在使用Jquery 1.8.0创建一个横幅旋转器插件,我的代码在Firefox和chrome中可以正常工作,但在IE9中有时会不可思议地无法正常工作,没有明显的原因。我的意思是,横幅不会出现,也不会出现错误。它根本就不在那里

因此,我在代码中添加了一些警报(更改为
console.log
),以跟踪代码失败的地方,我想我找到了失败的地方

页面上的html代码:

<div class="content-top">
    <div id="bannerRotator"></div>
</div>
<div class="content-bot">
</div>
横幅旋转器插件:

(function($) {

    $.fn.BannerRotator = function(options) {
        console.log("banner creation: begin");
        var opts = $.extend($.fn.BannerRotator.defaults, options);
        console.log("before foreach");
        return this.each(function() {
            alert("before this");
            // Commented out code
            alert("banner creation: end");
        });
        console.log("after foreach");
    };

    $.fn.BannerRotator.defaults = {
       // Default settings
    };

    // Other functions

})(jQuery);
执行此代码时,
警报(“foreach之后”)将永远不会出现,这是完全正常的。问题是,有时它会全部工作,但在其他时候,我得到的最后一个警报是
警报(“在此之前”)然后我直接进入
警报(“在横幅旋转器之后”)

我看到的最后一件事是,当插件工作时,
content bot
中的内容可以在警报框后面看到,而当插件失败时,我看不到
content bot
,但显示
bannerRotator
之前的所有内容。这让我想到它可能与
$(document).ready
功能有关,因为当插件失败时,它会失败,因为
$(document).ready
启动得太早

更新

还有一件事我注意到了。当我第一次打开我的页面时,我的横幅没有出现。没有什么。不管我刷新多少时间,还是什么都没有。但当我按F12键进入开发者工具窗口时,横幅就起作用了。它仍然不能一直工作,但大部分时间都能工作

别担心那部分。是
console.log
导致了这个问题。请参见

试用Jquery 1.7.2

Ie9上的document.ready事件存在回归


请按F12并尝试使用IE7和IE8仿真,我相信您需要更新此问题的更多信息。IE9真的很糟糕,比8差。其他IE版本呢?对他们有用吗?请注意,Internet explorer与其他一些流行的web浏览器相比没有精确的标准。因此,我在IE8和IE7(真正的浏览器,而不是仿真)中尝试了它,它在IE8中一直有效,在IE7中从未有效过。如果您认为这是一个计时问题,请尝试使用
console.log(“调试消息”)
而不是
alert()
它在等待单击时不是实时的。DOM在工作时和不工作时有什么区别?(您需要刷新developer tools视图以查看最新的DOM。)
(function($) {

    $.fn.BannerRotator = function(options) {
        console.log("banner creation: begin");
        var opts = $.extend($.fn.BannerRotator.defaults, options);
        console.log("before foreach");
        return this.each(function() {
            alert("before this");
            // Commented out code
            alert("banner creation: end");
        });
        console.log("after foreach");
    };

    $.fn.BannerRotator.defaults = {
       // Default settings
    };

    // Other functions

})(jQuery);