使用javascript事件加载浏览器图像?

时间:2010-09-15 13:06:09

标签: javascript jquery html css image-loading

我有一个包含大量图片的页面,最初隐藏在视图中,因为我正在使用选项卡式div(即使用CSS display隐藏一些div:none)。

因此,当页面加载时,加载所有图像需要很长时间,看起来页面很慢(因为浏览器上的加载栏不能完成10秒以上)。

我想要一种不加载图片的方法,直到它们在页面上可见。

我玩过jQuery LazyLoad但是这只会在滚动浏览器时加载图片(这对于标签式div不起作用)。

因此,有没有办法让LazyLoad像这样工作,或者有更好的方法吗?

谢谢!

6 个答案:

答案 0 :(得分:0)

也许jQuery Tabs可以做你需要的,在标签上调用ajax ......

如何显示隐藏的div?

答案 1 :(得分:0)

一个攻击计划:

不是将图像URL放在img标记的src属性中,而是将其放在其他位置(例如,隐藏的跨度,上面有特定的类),并在显示div时,遍历所有img标记并设置src到它应该拥有的URL。

作为一种方法,它肯定会有一些缺点。

答案 2 :(得分:0)

我最近尝试过,不得不说js不再可能了。也许它从来没有...... 像lazyload这样的项目总是宣称它们会阻止所有图像在启动时加载,但你可以在firebug中看到这不起作用。在domready和开始滚动时,图像甚至被加载两次......

你唯一的选择是现场的ajax或做这样的事情:

<img src="transparent.gif" alt="" rel="real image source" />

然后在div显示时切换属性,因此图像开始加载。

至少如果你不需要谷歌索引它们,这也很好。

希望有所帮助! :)

编辑:嗯,为什么我得到一个-1,当时我只是给了答案?只需查看带有lazyload的页面并启用firebug,然后滚动页面即可。甚至在stackoverflow和lazyload插件的注释中都说这是目前唯一的解决方案...... :(

答案 3 :(得分:0)

如果您正在使用(或可以使用)HTML5文档类型,则可以使用“data-”前缀作为标记属性:

<img src="" data-src="/path/to/image" style="display: none" />

然后你可以使用Javascript用data-src填充src:

$(SELECTOR).attr("src", $(SELECTOR).attr("data-src"));

答案 4 :(得分:0)

如果您的唯一目标是“隐藏”由于大量图片而花费这么长时间的进度条,我会选择某种AJAX解决方案,因为这样进度条不会被“使用” 。它确实会增加您希望加载HTML元素的方式(以及可能的时候)。

我个人不喜欢将HTML属性用于其他目的以外的其他任何内容,因此将路径存储在另一个属性中并在需要时切换不是我的第一选择。相反,我会尝试创建一个JavaScript数组(id =&gt;路径)并在需要时更新单独的HTML IMG元素。

祝你好运! ;)

答案 5 :(得分:0)

我以前没有意识到这一点,但是LazyLoad支持从事件中触发:

http://www.appelsiini.net/projects/lazyload

如果有人想知道我是怎么做的,请告诉我!