我在網站上通過jQuery使用圖像交叉淡化方法。出於保密的原因,我不能發佈該網站的全部代碼,但這裏的JavaScript進行交叉衰減器(基於this reference):JQuery問題:腳本(有時)失敗(某些版本)IE7
<script type="text/javascript">
$(function() {
if ($.browser.msie && $.browser.version < 7) return;
$('#nav li')
.removeClass('highlight').find('a').append('<span class="hover" />').each(function() {
var $span = $('> span.hover', this).css('opacity', 0);
$(this).hover(function() {
$span.stop().fadeTo(250, 1);
}, function() {
$span.stop().fadeTo(250, 0);
});
});
});
</script>
它可以順順當當在所有瀏覽器 - 包括IE7上安裝我的測試PC。但是,在IE7的其他電腦上,有時失敗。圖像將加載,但懸停在它們上面不起作用。這意味着JS不會徹底失敗 - 在這種情況下,翻轉仍然可以正常工作,而不會退色。相反,似乎IE7正在刪除「高亮」類,但隨後停止。
真正離奇的部分?失敗是100%隨機的。如果我刷新窗口,有時效果會正常。怎麼會這樣?
更新:我確定問題在於AJAX腳本爲網站提供動力。刪除所有AJAX並用靜態內容替換它可消除錯誤。我的理論是當頁面加載時,AJAX內容有時會在圖像加載之前完成。這使得IE7嚇壞了,放棄了淡入淡出效果。如果我認爲這是問題,那麼問題是:我該如何解決這個問題?
更新2:進一步下鄉兔子洞,使用招,我注意到了在IE7的效果每個成功加載一個一致的事情:我使用了懸停在主圖像的加載被中止,然後再次加載。當效果不成功時不會發生這種情況。換句話說,強制瀏覽器使用簡單的jQuery預加載器函數預加載圖像,每隔一段時間就會在IE7中打破交叉效應,而不是當前的零星工作狀態。
這對我來說太奇怪了,甚至無法理解,但任何想法都是值得歡迎的。
是否有可能某些資源文件無法可靠地下載(其他腳本,圖像,CSS等)? – 2009-08-21 16:24:17
我認爲邁克爾可能會做些什麼。抓住提琴手或其他交通監視器,並確保所有文件都通過。 – Travis 2009-08-21 16:29:38
不錯的想法,夥計們,但小提琴手驗證一切都會通過好嗎... – Josh 2009-08-21 17:11:44