在iframe中打开页面,页面中有长时间未能加载的元素,导致整个页面都处于空白,直到元素加载成功或失败。
如在iframe中加载包含下面这个图片的页面就会长时间处于空白
<img src='http://img04.tbsandbox.com/bao/uploaded/i4/TB1_uWLXXXXXXaPXXXXXXXXXXXX_!!0-item_pic.jpg' width='400' height='400' />
(淘宝沙箱的一张图片,沙箱不稳定长时间处理不了)
如何让页面先显示,不要长时间空白呢,图片再慢慢加载呢?
我错了 我写了了个简单例子发现不是这样,iframe中页面直接就显示出来,只是图片出不来。
我遇到完整问题是:
使用jquery.artDialog.js 的$.dialog.open() 方法
弹框加载的iframe中出现了这个问题。整个弹框在iframe中图片加载失败或成功后才显示内容,之前一直是在loading,弹框空白。
我以为是iframe的问题,现在看来是$.dialog.open()的实现机制导致的或是其他问题了,看来要修改$.dialog.open()的方法才能解决了。
有谁遇见过这个问题吗?
我仔细看了$.dialog.open() 方法,确实是在页面创建了一个table元素
在其中放置了iframe,所以问题就出在$.dialog.open() 方法使用table布局的。
我试了脚本加载img放到 $(function () {})中依旧不行,table还是在图片加载失败后才显示的。
table有点无解啊
第一,页面中有某些部分没显示就造成全部页面空白,这是你网页设计的问题。应该使用Div等分块,流式布局让页面能够一边解析一遍加载,而不是等某些部分下载完了才一起显示,比如使用Table就有这个问题。
第二,图片出不来应该考虑CDN等对静态文件加速,这个不是编码能解决的。
我仔细看了$.dialog.open() 方法,确实是在页面创建了一个table元素
在其中放置了iframe,所以问题就出在$.dialog.open() 方法使用table布局的
@月藏锋: 给分
@傲慢与偏剑: 问题是这个,但并不是我自己页面的问题,而是artDialog使用了table布局引起的。
用js在页面加载完成后再手动添加这个元素吧
可以考虑图片的延迟加载,这样的jquery插件很多的。
确实可以,页面瞬间打开了。
赞同一楼的方式,用脚本的方式来加载img。因为你的图片卡住了,art会认为还在加载中,当然现实loading了。
我仔细看了$.dialog.open() 方法,确实是在页面创建了一个table元素
在其中放置了iframe,所以问题就出在$.dialog.open() 方法使用table布局的。
我试了脚本加载img放到 $(function () {})中依旧不行,table还是在图片加载失败后才显示的。
table有点误解啊
这样看貌似无解了,除非修改$.dialog.open() 方法了
再不然在父页面用脚本加载img,可总觉得不伦不类
@月藏锋: 延迟加载图片也是可行的哇。
@幻天芒: 我简单试了下 延迟0.5秒执行脚本加载图片,确实可以,页面瞬间打开了。
@月藏锋: art的效果就是这样。先loading,然后直接出来。img下载来,刚好阻塞了这个loading。