【发布时间】:2011-10-16 05:19:21
【问题描述】:
我绝不是任何类型的编码员或程序员,但我一直在尝试加载和显示一些 gif,以便它们从一开始就同时具有动画效果。换句话说,我需要它们同步。
我用谷歌搜索了很多,我想出的东西似乎适用于 Chrome/Safari 和 Firefox,但像往常一样,Internet Explorer 拒绝合作。
我当前的代码是这样的:
var images = ["thephoto1", "thephoto2", "thephoto3", "thephoto4", "thephoto5"];
function initImages() {
for (var i = 0; i < images.length; i++) {
imageId = images[i];
image = document.getElementById(imageId);
image.style.visibility = "visible";
}
}
function preloadImages(urls) {
var img = new Array();
for (var i = 0; i < urls.length; i++) {
img[img.length] = new Image();
img[img.length - 1].src = urls[i];
}
}
window.onload = function() {
var img = new Array(
"http://desmond.imageshack.us/Himg391/scaled.php?server=391&filename=countdown.gif&res=medium",
"http://icanhascheezburger.files.wordpress.com/2010/11/funny-pictures-gif-cat-love.gif",
"http://i52.photobucket.com/albums/g9/cpchick/Random%20Gifs/therock.gif",
"http://www.mobileapples.com/Assets/Content/Screensavers/dc_1owy86mw.gif",
"http://www.pptbackgrounds.fsnet.co.uk/images/powerpoint-countdown-u1.GIF"
);
preloadImages(img);
initImages();
}
添加了一些 CSS:
.preload
{
visibility: hidden;
}
基本上是this 和this script 的组合。
您可以在此处查看实时示例:http://jsfiddle.net/AN9uB/
一些可能的方法或可能有用的帖子:
- Restart an animated GIF from JavaScript without reloading the image.
- Javascript to only display animated gif when loaded.
但是,通过阅读这些链接上的 cmets,我并不完全确定它们是否可行。
我使用的测试 gif 只是我发现的随机图像和一个小的预警,有些图像相当大,因为我需要测试各种大小和持续时间不等的 gif。所有的 gif 循环,除了第一个倒计时图像只播放一次。
在某些情况下,当使用 Firefox 3.6.18 查看页面时,第一个倒计时图像根本不会播放(它停留在 10),但其余的 gif 图像会同时加载和显示。
主要的问题是我想不出一种方法来使这个工作与 Internet Explorer 一起工作。我想也许可以预加载图像,然后通过 javascript 刷新页面。这是一个丑陋的解决方案,但我认为它会起作用。
Flash 是做这类事情的明显工具,但我为之制作这个的朋友只使用 gif。
是否有更优雅的解决方案适用于所有主流浏览器?同样理想的是,只使用 Javascript,而不是 JQuery。
感谢您的帮助。
【问题讨论】:
-
new Array很丑,用[]代替:p -
就像我提到的,我在编码方面完全是新手,所以由于代码有效(在兼容的浏览器中),我只是保持原样。
-
你不需要解释自己 - 那只是一个挑剔。
标签: javascript cross-browser gif animated-gif preload