我使用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?
請按F12,並與IE7和IE8仿真試試,我敢肯定你需要更新這個問題的更多信息。 IE9的工作真的很糟糕,比8差。 –
其他IE版本呢?它對他們有用嗎?請注意,Internet Explorer沒有其他一些流行的Web瀏覽器的精確標準。 – Lion
所以我試着用IE8和IE7(真正的瀏覽器,不是仿真),它在IE8中一直工作,並且從來沒有在IE7中工作。 – Shadowxvii