我有一个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(在winXP上):在ff和ie中我没有问题,我清楚地看到了动画gif。在safari中我看不到它。如果我用一个(明显是静态的)png来改变图像,图像就会出现...我做错了什么吗?safari有什么问题吗?
3条答案
按热度按时间66bbxpm51#
Safari不能很好的处理动画背景。我在某个地方看到过关于这个的bug报告。
你为什么不直接用图片代替背景呢?
5jdjgkvh2#
我个人对这个问题并不熟悉,但是我能够在网上找到一些类似的bug报告。你在这个页面上还做了什么?当你遇到这个问题时,你是否一直关注这个页面?显然,动画GIF的处理是相当复杂的:
http://webkit.org/blog/96/background-music/
http://www.quirksmode.org/bugreports/archives/2004/12/animated_gifs_u.html
https://bugs.webkit.org/show_bug.cgi?id=7320
第一个链接中特别相关片段:
在Safari 2和WebKit中,除非在某个地方绘制GIF,否则GIF不会动画。如果动画GIF不可见,则动画将暂停,并且动画不会消耗CPU。因此,背景选项卡中的所有动画图像都不会动画,直到该选项卡中的页面变为可见。如果动画GIF滚动到屏幕外,即使在前景页面上,它将停止动画,直到它再次变为可见。
Safari的动画GIF的CPU利用率非常高(有一段时间,MacNN的读者认为Safari有“动画GIF问题”,因为在论坛帖子中输入速度太慢,但实际上这个错误与页面顶部和底部的Flash广告有关)。
n6lpvg4x3#
也许是你的gif图像?我刚刚启动了你的代码在safari4.0.4在windows下与gif创建的http://www.ajaxload.info/和工作完美。