利用image对象的onerror事件来判断,出错则更换image对象的src为默认图片的URL。

<p>第一种情况:图片存在,正常显示
  
<img src="http://www.jb51.net/logo.gif"
onerror="javascript:this.src='http://www.jb51.net/logos.gif'" /></p>
<p>第二种情况:图片不存在,显示默认图片
  
<img src="http://www.jb51.net/logoddd.gif"
onerror="javascript:this.src='http://www.jb51.net/logos.gif'" /></p>

注意:如果使用不当,在IE内核的浏览器下会造成死循环。比如:当【默认图片的url地址】也加载不成功(比如网速比较慢的时候)或不存在的话,就会反复的加载,最后造成堆栈溢出错误。

因此, 需要用下面两种方法解决:
a、更改 onerror 代码为其它处理方式或者确保 onerror 中的默认图片足够小,并且存在。
b、控制onerror事件只触发一次,需要增加这句话:this.onerror=null; 增加后如下:
1
<img src="图片的url地址" alt="图片XX" onerror="this.src='默认图片的url地址;this.onerror=null'"/>

下面是通过js的判断
用javascript判断指定图片文件是否存在: 
如判断<img src="http://www.jb51.net/logos.gif">这个图片地址是否存在. 
如果不存在,隔几秒重新探测此图片,如果地址有效则,提示地址有效

<script type="text/javascript">
function IsExist(url)
{
  x = new ActiveXObject("Microsoft.XMLHTTP")
  x.open("HEAD",url,false)
  x.send()
  return x.status==200
}
alert(IsExist("http://www.jb51.net/logos.gif"));
</script>

图片存在则上面的返回true

<SCRIPT language="javascript">
var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.Open("GET""http://www.jb51.net/logos.gif", false);
xmlhttp.Send();
alert(xmlhttp.responseText);
</SCRIPT>

图片存在则返回GIF89aX

<img src="http://www.jb51.net/logos2.gif" onerror="alert('该图片不存在!');">

因为图片不存在则返回该图片不存在!

补充:

down vote
accepted
You could use something like: function imageExists(image_url){ var http = new XMLHttpRequest(); http.open('HEAD', image_url, false);
http.send(); return http.status != 404; }
Obviously you could use jQuery/similar to perform your HTTP request. $.get(image_url)
.done(function() {
// Do something now you know the image exists. }).fail(function() {
// Image doesn't exist - do something else. })

原地址:http://www.jb51.net/article/8796.htm

js判断img是否存在的更多相关文章

  1. js判断本机是否已安装app

    需求:在浏览器或者app webview中打开的页面,js判断本机是否已安装搜狐新闻客户端. 一.微信 1.分享——好友/朋友圈,feed会有搜狐新闻标记,打开url后缀参数isappinstalle ...

  2. js判断网页是否加载完毕 包括图片

    <script type="text/javascript" language="JavaScript"> //: 判断网页是否加载完成 docum ...

  3. 为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件

    为不同分辨率单独做样式文件,在页面头部用js判断分辨率后动态加载定义好的样式文件.样式文件命名格式如:forms[_屏幕宽度].css,样式文件中只需重新定义文本框和下拉框的宽度即可. 在包含的头文件 ...

  4. JS判断网页是否在微信中打开/

    JS判断网页是否在微信中打开,代码如下: <script type="text/javascript"> function is_weixn(){ var ua = n ...

  5. js判断当前页面在移动设备还是在PC端中打开

    方法一: var isPC = function () { var userAgentInfo = navigator.userAgent.toLowerCase(); var Agents = ne ...

  6. js判断undefined类型

    js判断undefined类型 if (reValue== undefined){    alert("undefined");    }  发现判断不出来,最后查了下资料要用ty ...

  7. js判断只能输入数字和只能输入

    JS判断只能是数字和小数点 1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'' ...

  8. 兼容各浏览器的js判断上传文件大小

    由于项目需要,在网上找了一个JS判断上传文件大小的程序,经测试兼容IE6-,Firefox10,Opera11.,safari5.,chrome17 <!DOCTYPE html> < ...

  9. JS判断字符串长度的5个方法

    这篇文章主要介绍了JS判断字符串长度的5个方法,并且区分中文和英文,需要的朋友可以参考下 目的:计算字符串长度(英文占1个字符,中文汉字占2个字符)   方法一:    代码如下: String.pr ...

  10. H5案例分享:使用JS判断客户端、浏览器、操作系统类型

    使用JS判断客户端.浏览器.操作系统类型 一.JS判断客户端类型 JS判断客户端是否是iOS或者Android手机移动端 通过判断浏览器的userAgent,用正则来判断手机是否是ios和Androi ...

随机推荐

  1. ElasticSearch——索引生命周期管理

    从ES6.6开始,Elasticsearch提供索引生命周期管理功能,索引生命周期管理可以通过API或者kibana界面配置,详情参考[index-lifecycle-management] 本文仅通 ...

  2. C#反射回顾笔记

    一 .反射概述 反射提供描述程序集.模块和类型的对象(Type 类型). 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型,然后调用其方法或访问其字段和属性. 如果代码中 ...

  3. [CareerCup] Guards in a museum 博物馆的警卫

    A museum was represented by a square matrix that was filled with O, G, and W where O represented ope ...

  4. pytest文档20-pytest-html报告优化(添加Description)

    前言 pytest-html测试报告默认是不展示用例描述Description内容,之前用unittest生成的报告是可以展示用例的描述,也就是test开头的用例下三个引号里面的注释(docstrin ...

  5. Ext.jsTree 向子节点添加叶子节点

    // 定义搜索节点树结构Store const nodeStore = Ext.create('Ext.data.TreeStore', { autoLoad : true, id : 'nodeSt ...

  6. v-CheckBox

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  7. mssql sqlserver时间戳与时间格式互相转换的方法分享

    转自: http://www.maomao365.com/?p=9336 摘要: 下文讲述mssql中时间戳和时间格式的转换方法,如下所示: 实验环境:sql server 2008 R2 时间戳简介 ...

  8. 《Mysql 索引 - 概述》

    一:索引的目的 - 索引的出现其实就是为了提高数据查询的效率,就像书的目录一样. 二:InnoDB 索引模型 - InnoDB 采用 B+树 的数据结构进行存储. - 例如,我们建立一张表,分析他的数 ...

  9. 【51nod】1634 刚体图

    [51nod]1634 刚体图 给一个左边n个点右边m个点二分图求合法的连通图个数,每条边选了之后会带来价值乘2的贡献 类似城市规划那道题的计数 设\(g[i][j]\)为左边\(i\)个点,右边\( ...

  10. 序列变换(HDU-5256)【LIS】

    题目链接:https://vjudge.net/problem/HDU-5256 题意:给一个数列,每一个数都不相同且为整数,现求,最少需要修改多少次才能使该数列为严格上升的. 思路:首先,对于一个严 ...