关于img标签src找路径找不到问题

本文介绍了几种使用JavaScript检查图片是否存在的方法,包括利用XMLHttpRequest发送请求判断状态码、通过创建Image对象检查尺寸及文件大小,以及使用onerror事件替换无法加载的图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、JS+XMLHTTP


var oreq = new ActiveXObject("Microsoft.XMLHTTP")
oreq.open("Get","blog/attachments/month_0606/s2006610204959.jpg",false);
oreq.send();
alert(oReq.status)
if(oReq.status==404)
alert('不存在');
else
alert("存在")
}

2、查看图片找的到嘛

 function CheckImgExists(imgurl) {  
    var ImgObj = new Image(); //判断图片是否存在  
    ImgObj.src = imgurl;  
    //没有图片,则返回-1  
    if (ImgObj.fileSize > 0 || (ImgObj.width > 0 && ImgObj.height > 0)) {  
        return true;  
    } else {  
        return false;
    }  
} 

3、用onerror替换不存在的图片 


<img src="images/img1.jpg" height="300" width="800" onerror="notFind(this)";">

<script>
function notFind(obj) {
    obj.src = "../images/LOGO.png";
    obj.onerror = null;//防止图片路径一直找不到而循环查找设置的onerror路径
}
</script>

这边再普及一下路径问题:

当前目录:./images/xxx.png

如何表示上级目录 ../images/xxx.png/表示源文件所在目录的上一级目录,../../images/xxx.png表示源文件所在目录的上上级目录,以此类推。 

### HTML 中 `<img>` 标签 `src` 属性的绝对路径使用 在HTML中,`<img>`标签的`src`属性用于指定图像文件的位置。理论上,该属性既可以使用相对路径也可以使用绝对路径。然而,在实际应用过程中,当尝试通过绝对路径加载图片时可能会遇到一些限制。 #### 安全策略的影响 如果页面托管于服务器上,则浏览器基于安全性考量通常会阻止HTML文档访问本地文件系统中的资源。这意味着即使指定了形如`file://...`这样的绝对路径来指向本机上的图片文件,大多数现代浏览器也不会执行此操作[^1]。因此在这种环境下采用绝对路径可能无法成功显示目标图像。 #### 特殊情况下的可用性 尽管如此,对于某些特定场景而言,仍然存在例外情形: - **本地环境测试** 假设当前正在浏览的是存储在个人计算机硬盘内的HTML文件而非来自远程Web服务端的内容(即URL以`file:///C:/path/to/file.html`等形式呈现),那么在此类条件下能够正常引用位于同一台机器上的其他位置处的图形素材——只要这些素材同样处于可被公开读取的状态下即可[^1]。 - **跨域资源共享(CORS)** 另一方面,如果是希望通过HTTP协议定义的标准形式给出完整的网络地址作为参数传递给`<img>`元素的话(例如"http://example.com/image.jpg"),则需注意涉及到不同源之间的数据交换问题。为了使这种类型的请求生效,相应的服务器端配置应当支持Cross-Origin Resource Sharing (CORS),从而允许外部站点获取其提供的多媒体资料[^2]。 #### 推荐实践 鉴于上述提到的各种潜在障碍以及兼容性的考虑因素,一般建议尽可能利用相对于HTML文档本身的目录结构组织起来的内部链接方式表达所需嵌入对象的具体方位关系;也就是所谓的“相对路径”。这样不仅可以简化部署流程还能有效规避因权限设置不当所引发的一系列麻烦事态发生。 ```html <!-- 正确示例 --> <img src="images/example.png" alt="Example Image"> ``` 当然,在特殊需求驱动之下确实有必要运用到全局定位符的情况下,请务必确认相关条件均已满足并妥善处理好可能出现的一切异常状况。 相关问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值