JavaScript:失败的图像请求是否有error属性
JavaScript: Is there an error property for failed image requests?
HTML <img>
元素有一个布尔complete
属性,如果图像已成功加载(或尚未分配src
),则该属性为true
。它还有一个onload
事件,当映像成功加载时激发;还有一个onerror
事件,当图像加载失败时激发(例如,由于链接断开、映像损坏或网络脱机)。
现在。。。我想知道的是,图像元素上是否存在属性,该属性表示图像已经加载失败。假设我不能使用onerror
事件,因为脚本可能只有在事件触发后才能访问映像。我们正在寻找的是一个简单的布尔查找属性,如complete
,它表示"已经尝试加载此图像,但失败了"。(我在规格中没有看到,但我想知道我是否遗漏了什么)。
您可以在几乎所有浏览器中使用naturalWidth
和naturalHeight
来获得类似的效果(IE8及以下版本不支持此属性)。naturalXX
属性包含图像的原始高度/宽度,然后通过HTML/CSS属性/样式进行修改。因此,如果naturalWidth == 0
,则表示图像加载失败。
(请注意,不能使用标准的width
或height
属性,因为它们将返回未找到的占位符图像的大小。)
document.getElementById("image").naturalWidth ? "success" : "fail"
如果你只是想更改未找到的占位符图像,有一个漂亮的HTML解决方案:
<object data="https://stackoverflow.com/does-not-exist.png">
<img src="https://stackoverflow.com/content/img/so/logo.png">
</object>
小提琴:http://jsfiddle.net/K3dwX/1/
PS:IE6+的潜在解决方案
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 测试索引值是否等于某个数字的倍数
- Fancybox是否将Click事件静音
- 主干-不管怎样,检查事件以前是否绑定过
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 是否可以将一个函数输入连接到另一个函数调用的文本
- AngularJS是否在$error.maxlength对象中存储一个值
- Google Chrome 中的源映射是否会推送到 Error.stack
- JavaScript:失败的图像请求是否有error属性
- 是否可以修改error '的构造函数,使其包含抛出错误所在的上下文?
- 如何检测AngularJs表单中的$error对象是否为空
- 在Microsoft javascript中,是否可以获得Error对象的英文消息属性?
- 当检查是否选择了多个选择索引时,出现SCRIPT ERROR 70