JavaScript:预加载图像函数-用法、DOM就绪&;搜索引擎优化?

JavaScript:预加载图像函数-用法、DOM就绪&;搜索引擎优化?,javascript,jquery,preloader,preload,image-preloader,Javascript,Jquery,Preloader,Preload,Image Preloader,在Google的帮助下,我编写了一个小的预加载脚本: var i = 0; function preloader() { imageObj = new Image(); images = [ 'some/image1.jpg', 'some/image2.jpg', 'some/image3.png', 'and.png', 'so.jpg', 'on.png'

在Google的帮助下,我编写了一个小的预加载脚本:

var i = 0;

function preloader() {

    imageObj = new Image();

    images = [
        'some/image1.jpg', 
        'some/image2.jpg',
        'some/image3.png',
        'and.png',
        'so.jpg',    
        'on.png'
    ];

    for (i = 0; i <= 20; i ++) {

      imageObj.src = images[i];

    }
}
var i=0;
函数预加载程序(){
imageObj=新图像();
图像=[
'some/image1.jpg',
'some/image2.jpg',
“some/image3.png”,
'和.png',
“so.jpg”,
“on.png”
];

对于(i=0;i,因为您将图像SRC分配给同一个变量,所以每个新请求都将取消上一个请求,因为它尚未完成加载

您也可以为此使用阵列:

imageObj = [];

...your code...

for (i = 0; i < images.length; i ++) {
      imageObj[i] = new Image()
      imageObj[i].src = images[i];
    }
imageObj=[];
…你的代码。。。
对于(i=0;i
不,这不会影响SEO,因为scraper查看的是您页面的文本,而不是图像。您可以在DOM准备就绪之前运行此操作,因为您没有操作DOM-所有图像都在内存中


jQuery只是由JavaScript组成,实际上没有任何东西可以提高这个简单代码块的效率。

据我所知,预加载只用于DOM中没有的元素(尚未)。DOM中的元素无论如何都会被加载,加载后的事件是$(document).ready()(假设jQuery)。对任何事物的实际效果取决于您如何(以及为什么)使用它。没有理由将图像存储在数组中(
imageObj
),除非以后需要访问它…这样做的原因是为了确保它已加载。否则,对映像的请求将在循环的下一次迭代中被取消,并且不会发生预加载。不会,因为在每个循环上使用
new image()
可确保新映像和新映像(不会被覆盖)请求已启动。为什么不加载?我在没有数组的情况下使用了这样的预加载,效果很好是的,但OP在循环之外使用了一个新映像。对,所以我同意您需要使用
new image()
在循环内部,但我不认为有理由将该映像放入新数组
imageObj
。您应该能够执行
var newImage=newImage();newImage.src=images[I];