为什么Image 'complete'属性总是返回true,即使没有SRC标签
Why Image 'complete' property always return true even if there is no src tag?
我只写
document.createElement("img").complete;//To check whether image is loaded or not
在Firefox中,它返回true。在IE中,它返回false
或
在html页面中创建一个图像:
<!-- IMG tag with no SRC attribute. -->
<img id="noSrcImg" />
在js中检查完整的属性值:
var img = document.getElementById("noSrcImg");
img.complete
FF为真,IE为假
谁能解释为什么这种不一致的行为?
是否有其他更好的方法来检查图像是否在DOM中加载?
我尝试了readyState属性,但它不适合IE11。
这是IE的一个bug。根据规格:
如果以下任何一个条件为真,IDL属性
complete
必须返回真:
- 省略
src
属性。- 网络任务源在获取资源后排队的最后一个任务已经排队。
img
元素完全可用img
元素损坏否则,属性必须返回false。
了解图像状态的最好方法是处理load
和error
事件。如果由于某种原因无法判断图像是否已成功加载,请检查img.complete && img.naturalWidth > 0
。如果为true,则表示图像加载成功。否则,图像要么仍在加载,要么加载失败——由于IE的不一致,很难判断是哪一个。
请尝试加载
确保在分配src之前定义了事件处理程序-在非常快的网络上,如果没有首先定义,src可能会在事件处理程序之前加载
var im = document.createElement("img");
im.onload=function() { alert(this.src+' loaded')} // assign before src
im.onerror=function() { alert(this.src+' failed')} // if necessary
im.src="someimage.jpg";
返回一个布尔值,无论浏览器是否成功获取图像,该值都为true。如果图像没有src值,它也会显示为true。
像任何href一样,空img src作为相对URL引用基本URL,即文档的URL。@mplungjan张贴了很好的解决方案来实际检查是否以及何时加载
相关文章:
- 在<script src=“"></脚本>标签
- 使用json数据更改视频标签中的src属性
- 如何通过单击更改对象标签 src
- 图片标签获胜't接受src
- 使用jQuery通过更改src属性来设置一个图像标签的动画
- 类似于htmls<script src=“">xaml的标签
- 使用angularjs交换图像标签中的ng-src属性
- 用JavaScript更改
标签src
- 使用 javascript 从图像数组中更改 img 标签 src.骰子游戏
标签和新的Image().src有什么区别
- 如何在
标签中获取来自 ng 控制器的 'src' 的数据
- 将 src 注入到 HTML5 的音频标签中
- 将图像从 img 标签的 src 上传到 php
- 脚本标签的动态创建和 src 加载在 ie10 中不起作用
- 脚本SRC标签加载index.jsp本身
- 我如何添加一个javascript变量到HTML图像src标签
- 在HTML文件中使用脚本SRC标签时,没有找到404
- 为什么Image 'complete'属性总是返回true,即使没有SRC标签
- Data-src标签在index.html中工作,但在angular视图中不起作用
- 在一个img src标签上显示不同格式的普通图像,以及base64图像