2012-08-24 52 views
1

我使用jQuery 1.8.0創建一個橫幅肩插件和我的代碼工作正常在Firefox和Chrome,但神祕不會有時在IE9工作沒有明顯的原因。我的意思是,橫幅不會顯示出來,也沒有錯誤。根本不在那裏。jQuery的錯誤在IE9

因此,我添加了一些警報(更改爲console.log)我的代碼來追蹤代碼失敗的地方,我想我找到了哪裏。頁面上

的html代碼:

<div class="content-top"> 
    <div id="bannerRotator"></div> 
</div> 
<div class="content-bot"> 
</div> 

頁上的JavaScript代碼:

$(document).ready(function() { 
    console.log("Before banner rotator"); 
    $("#bannerRotator").BannerRotator({ 
     BRBannerImages: ["../Images/Banners/banner1.jpg", 
         "../Images/Banners/banner1-b.jpg", 
         "../Images/Banners/banner2.jpg", 
         "../Images/Banners/banner2-b.jpg", 
         "../Images/Banners/banner3.jpg", 
         "../Images/Banners/banner3-b.jpg", 
         "../Images/Banners/banner4.jpg", 
         "../Images/Banners/banner4-b.jpg", 
         "../Images/Banners/banner5.jpg", 
         "../Images/Banners/banner5-b.jpg", 
         "../Images/Banners/banner6.jpg", 
         "../Images/Banners/banner6-b.jpg"] 
    }); 
    console.log("After banner rotator"); 

    $("#white-bg").css({ height: $(document).height() }); 

    console.log("After white bg"); 
}); 

旗幟肩插件:

(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); 

執行此代碼時,該alert("after foreach");將永遠不會出現這是完全正常的。事情有時它會一切正常,但在其他時間,我得到的最後一個警報是alert("before this");,然後我直接進入alert("After banner rotator");。我看到

最後一件事是,當插件的工作原理,在content-bot內容可以看出警告框後面,而當插件出現故障,我不能看到content-bot,但會顯示bannerRotator之前的一切。這導致我認爲它可能與$(document).ready函數有關,因爲看起來當插件失敗時,它失敗了,因爲$(document).ready發射得太早。

UPDATE

這裏是我注意到另一件事。當我第一次打開我的頁面時,我的橫幅沒有出現。沒有。無論我刷新多少時間,仍然沒有任何東西。但是當我按F12來獲取開發人員工具窗口時,橫幅工作。它仍然無法一直工作,但大部分時間都是這樣。

沒關係那部分。造成這個問題的是console.log。見Why does JavaScript only work after opening developer tools in IE once?

+0

請按F12,並與IE7和IE8仿真試試,我敢肯定你需要更新這個問題的更多信息。 IE9的工作真的很糟糕,比8差。 –

+0

其他IE版本呢?它對他們有用嗎?請注意,Internet Explorer沒有其他一些流行的Web瀏覽器的精確標準。 – Lion

+0

所以我試着用IE8和IE7(真正的瀏覽器,不是仿真),它在IE8中一直工作,並且從來沒有在IE7中工作。 – Shadowxvii

回答