我有一個javascript“加載”函數,如下所示:
function splashScreen() {
var div = document.createElement('div');
div.appendChild(document.createTextNode("some text"));
div.style.position = "fixed";
div.style.width = "100%";
div.style.height = "100%";
div.style.left = "0";
div.style.top = "0";
div.style.zIndex = "1000";
div.style.background = "white url('img/ajax-loader.gif') no-repeat center";
div.style.fontSize = "x-large";
div.style.textAlign = "center";
div.style.lineHeight = "3em";
div.style.opacity = "0.75";
div.style.filter = "alpha(opacity=75)"; // fix ie
document.body.appendChild(div);
return true;
}
我在表單操作中使用這個函數(onsubmit="return splashScreen()")在下一個頁面加載時顯示一個“旋轉標志”... 問題出在那個“img/loading.gif”和safari(win XP上):在ff和ie我沒有問題,而且我清楚的看到動畫gif。在safari中我看不到它。 如果我用一個(明顯是靜態的)png改變圖像,圖像就會出現... 我做錯什么了嗎?safari有什么問題?
Safari對動畫背景的處理不夠好。我在某個地方看到過關于這個的bug報告。
為什么不用圖片代替背景呢?
我個人并不熟悉這個問題,但我能夠在網上找到一些類似的錯誤報告。你在這一頁上還做了什么?遇到此問題時,您是否一直關注頁面?顯然,處理動畫gif是相當復雜的:
http://webkit.org/blog/96/background-music/ http://www . quirksmode . org/bug reports/archives/2004/12/animated _ gifs _ u . html https://bugs.webkit.org/show_bug.cgi?id=7320
第一個鏈接中特別相關片段:
在Safari 2和WebKit nightlies中,gif都沒有動畫,除非它們被畫在了某個地方。如果動畫GIF變得不可見,那么動畫將會暫停,并且動畫不會消耗CPU。因此,背景選項卡中的所有動畫圖像在該選項卡中的頁面變得可見之前不會顯示動畫。如果一個動畫GIF被滾動到屏幕之外,甚至在前景頁面上,它將停止動畫,直到它再次可見。
Safari用動畫gif的CPU使用率非常好。(有一段時間,MacNN的讀者認為Safari存在“動畫GIF問題”,因為在論壇帖子中輸入時速度很慢,但這個問題實際上與頁面頂部和底部的Flash廣告有關。)
也許是你的gif圖?我剛剛用http://www.ajaxload.info/上創建的gif在windows下的Safari 4.0.4上運行了你的代碼,運行得非常完美。