【发布时间】:2014-01-02 21:17:39
【问题描述】:
我建立了一个作品集网站,其中包含一个 iFrame 来展示艺术品。为了显示每幅作品,将一个包含大图像的 html 页面加载到 iFrame 中。
iFrame 在为空时隐藏(显示:无),并且应该仅在内容完全加载时淡出。
//pass url of artwork page to iFrame
$("#creativeiframe").attr('src', thisLink.attr('href'));
//fade up iFrame once content loaded
$('#creativeiframe').load(function() {
$('#creativeiframe').fadeIn(300);
});
我按预期工作 - iFrame 只会在内容包括大图像完全加载时加载,但加载缓慢促使我尝试预加载艺术图像,以便他们开始下载在用户单击将它们加载到 iFrame 之前。
function preloadImage(url)
{
var img=new Image();
img.src=url;
}
现在我遇到了一个问题 - 有时当用户点击加载艺术品时,iFrame 会淡出显示半加载的图像,或者更糟糕的是只显示 html 内容而没有加载图像。我查看了 Chrome 开发工具网络检查器,这似乎发生在相关图像已开始预加载但尚未完成时。
所以我的问题是:
a.) 有谁知道为什么会这样?是不是因为在iFrame src改变时预加载没有网络请求图片,所以.load事件不等待图片加载?
b.) 有没有办法让 iFrame .load 事件在触发前等待“半预加载”图像完成加载?
感谢期待 - 放轻松,我是 JS 的新手!
【问题讨论】:
-
如果你的图片真的很大,我建议你使用 Progressive JPEG 进行预览。
-
谢谢伊戈尔,是的,我正在使用渐进式 JPEG,尽可能压缩等
-
顺便说一句,有人知道为什么我的问题被否决了吗?没有人要求澄清或完全回答它,所以假设它相当清楚而不是一个愚蠢的问题。我是这个论坛的新手,所以想改进...
-
是的,我认为这是一个现实世界的问题。 +1
标签: javascript iframe javascript-events preloading