0
我有一个页面预先加载了多个图片,以便使用Javascript更改图片将不会出现任何加载时间或闪烁。为此,我有一个Javascript预加载器。它在Opera,Safari,Chrome和Explorer中运行良好,一旦页面加载完毕,您可以更改图像而无需任何闪烁或加载时间。然而,在Firefox中,它似乎在工作,但每个图像之间都有闪烁。当经过所有人后,每个图像之间的闪烁再次经过时会消失。我将此解释为预加载器未正确加载图像到Firefox的缓存中。我的单独的预加载脚本看起来像这样:Javascript preloader在Firefox中加载不正确
<!--
function loadImages()
{
if(document.images)
{
for(i=0; i<imageArray.length; i++)
{
var toLoad = new Image();
toLoad.src = imageArray[i];
}
}
}
-->
这是从文件的头部,首先将参照外部脚本,然后至UPP图像添加到阵列的功能,然后最终通过函数调用加载loadImages()。
你可以在这里看到:http://www.siroccomosaique.se/SLUTTEST/galleri_.cls
如果你使用Firefox,你会看到图像之间的非常短的闪烁你第一次滚动查看照片。
你的意思是在加载脚本中使用相同的变量,或者你的意思是在页面上的代码...我不认为我理解:)另外,有什么奇怪的是,当我使用相同的脚本与较小的图像,然后即使Firefox滚动通过他们没有闪烁... –
@ fast-reflexes现在你创建每个图像,存储在本地变量,然后开始加载。但是,当loadImages()返回到负载超出范围,并没有什么是保持那些垃圾收集的图像。如果图像很大,则它们将不适合浏览器的图像缓存,并且一旦HTMLImageElements被GCed处理就会被驱逐。所以你想要做的是创建一个全局数组并将HTMLImageElement存储在那里。 –
好吧,对不起,不在更高的水平,但你的意思是将图像放入一个带有图像类型的数组中,并按照我现在所做的方式预加载它们可以解决问题?基本上这样就可以像现在一样工作,但是它们在被显示之前不会收集垃圾。如果我得到了正确的,我仍然可以将它们存储为图像类型,或者我必须将它们存储为HTMLImageElements(我真的不知道何时使用此类型,但我想我可以看看它,如果这是我需要由于某种原因使用)。非常感谢您的帮助! –