javascript - 如何从第三方应用程序替换评论部分中的图像
问题描述
我需要在我网站的评论部分替换一张图片。评论部分位于单独的服务器(第三方应用程序)上,我无权访问它。
评论提供者 HTML 评论框添加了图像,它工作了 6 个月,然后图像变成了 404。
我想用我自己的服务器上的图像替换损坏的图像。
我试过了
<script>
$(document).ready(function() {
document.getElementById("comment_14368294")[0].src = "team-conasuaga-east-cowpen-trail-4_480px.jpg";
});
</script>
但没有用。
我想操作的第三方代码从 Chrome Inspector 显示
<div class="comment" id="comment_14368294">
<span class="date">(Apr 7, 2019) </span>
<span class="author hcb-mod"><b class="author-name">Conrad Easley (mod)
</b>said:</span>
<blockquote>
<img align="left" class="gravatar"
src="https://www.gravatar.com/avatar/2484aca7544b9b228bbd67c0be236137?
s=40&d=http%3A%2F%2Fhtmlcommentbox.com%2Fstatic%2Fimages%2Fgravatar.png">
Team Conasauga Workday on East Cowpen Trail April 6th, 2019
</blockquote>
<a href="https://www.htmlcommentbox.com/storage/lg_14368294_team-conasuaga-east-cowpen-trail-4_480px.jpg">
<img src="https://www.htmlcommentbox.com/storage/14368294_team-conasuaga-east-cowpen-trail-4_480px.jpg">
</a>
<p class="hcb-comment-tb">
<a class="hcb-flag" href="javascript:hcb.flag('14368294')">
<img src="https://www.htmlcommentbox.com/static/images/flag.png">flag
</a>
<a class="hcb-like" href="javascript:hcb.like('14368294')">
<img src="https://www.htmlcommentbox.com/static/images/like.png">like</a>
</p>
<div class="likes" style="display:none">
<span>0 </span>
<img src="https://www.htmlcommentbox.com/static/images/like.png">
</div>
</div>
我最终使用伪选择器用 CSS 替换了图像
基本上, ::before 和 ::after 仅在图像加载失败时应用。您可以使用绝对定位将 CSS 伪元素放置在损坏的图像占位符上:
#comment_14368294 img {
position: relative;
width: 480px;
height: 360px;
display: inline-block;
vertical-align: text-top;
}
#comment_14368294 img::before {
content: '';
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
line-height: 200px;
background-color: #fd0;
background: url(https://cohuttawildernesshiking.com/team-conasuaga-east-cowpen-trail-4_480px.jpg) no-repeat;
color: currentColor;
text-align: center;
border-radius: 2px;
display: block;
width: 480px;
height: 360px;
overflow: hidden;
}
解决方案
使用 jQuery,您可以选择保存您的评论的容器并查询使评论独一无二的第一个元素。然后,您可以遍历获得的数组并更改图像。您将要处理的唯一问题是您是否要应用相同的图像或独特的东西。
我为你创建了这个例子。评论容器是您在自己的网站上提供的用于放置所有评论的元素。从那里第一个 div 是使评论独一无二的原因。在示例中,我用类似的猫替换了不同的图像。
$(document).ready(function() {
var comments = $("#comments-container").find("div");
//console.log(comments);
$(comments).each(function(i, item) {
// console.log(item);
$(item).find('img').attr('src', 'https://loremflickr.com/220/200/cat');
});
});
#comments-container>div {
margin: 20px !important;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='comments-container'>
<div id="comment_1">
<img src="https://loremflickr.com/320/240/dog" />
</div>
<div id="comment_2">
<img src="https://loremflickr.com/320/240/girl" />
</div>
<div id="comment_3">
<img src="https://loremflickr.com/320/240/boat" />
</div>
<div id="comment_4">
<img src="https://loremflickr.com/320/240/statue" />
</div>
<div id="comment_5">
<img src="https://loremflickr.com/320/240/guitar" />
</div>
</div>
").find('img') .attr('src','steam-conasuaga-east-cowpen-trail-4_480px.jpg');
为什么在代码中应用数组还不是很清楚。通常 anid
在文档中只使用一次。getElementById() 不会产生数组。
推荐阅读
- python - 使用 Win10 任务调度器通过批处理调度 Scrapy Spider
- json - 处理(读取)逻辑应用程序中的 Base64 编码文件,并发布到端点
- jenkins - 由于在 /tmp/.jenkins/jenkins/ 目录下运行脚本的 cron 作业导致 CPU 利用率高
- c# - 将 1 更新为多个导航属性时出错
- php - HTML 标记
在聊天工具上发送消息时插入到 moodle ajax 响应中
- jenkins - 正确发送从我们不同的 Jenkins 工作发送的电子邮件的标准方法是什么?
- android - 使用 `xmpp` 和 `smack` 从 `vcard` 获取自定义元素
- laravel - 无法更新多对多 eloquent
- automation - 无法使用 ChromeDriver 和 Protractor 创建着色器缓存条目:-2
- sql - 如何将 postgreSQL 代码转换为 Oracle SQL