javascript - element.currentSrc 在除 Firefox 之外的所有浏览器中返回 URL
问题描述
我正在尝试获取通过 srcset HTML 属性加载的响应式图像的 URL。
到目前为止,我已经通过沿着下面的代码行请求图像的 currentSrc 来解决这个问题。
<img ID="image1" src="http://www.example.com/123.jpg" srcset="http://www.example.com/123.jpg 480w, http://www.example.com/123-large.jpg 640w,">
<script>
var $currImg = $('#image1');
var img = $currImg.get(0); //retrieve DOM element from $currImg
console.log(img.currentSrc);
</script>
在大多数浏览器中,这会记录 URL,例如“ http://www.example.com/123-large.jpg ”。
但是在 Firefox 中,它会记录一个数据 URI,如下所示:
"data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAAAAAAEAAAICRAEAOw=="
此数据 URI 似乎不适用于我的预期目的。我正在尝试将 src 设置为另一个元素的背景图像。它似乎只是在 Firefox 中加载了一个空图像。
为什么 Firefox 将 URL 转换为数据 URI,有没有办法强制它返回正常的 URL?
解决方案
这个 dataURL 是一个 1px x 1px 的图片,可能是浏览器在 img 加载下一张图片时设置的。我个人在 osX 上的 FF63 上没有它,我怀疑这是一个错误,您可以从脚本中访问它......(或者某些扩展是否可以设置它?)。
但无论如何,您需要做的是等待onload
事件,以便currentSrc
有效解决。
console.log('before load', image1.currentSrc);
image1.onload = function() {
console.log('after load', image1.currentSrc);
};
<img id="image1" src="https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/John_William_Waterhouse_A_Mermaid.jpg/619px-John_William_Waterhouse_A_Mermaid.jpg" srcset="https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/John_William_Waterhouse_A_Mermaid.jpg/100px-John_William_Waterhouse_A_Mermaid.jpg 100w, https://upload.wikimedia.org/wikipedia/commons/thumb/5/55/John_William_Waterhouse_A_Mermaid.jpg/330px-John_William_Waterhouse_A_Mermaid.jpg 330w">
推荐阅读
- xcode - 如何在 Xcode 的图表中颠倒和限制线
- ios - 创建自定义 Mapbox 标记
- qt - windeployqt.exe 将 Qt 目录存放在哪里?
- linux - 需要使用 setxkbmap 全局切换布局而不是每个窗口
- github - Github - 下载不完全包括所有文件夹/文件
- protobuf-net - MessageParser.ParseFrom - GUID 问题
- php - 会话变量与数据库表变量不匹配
- asp.net-core - 表中的 EditForm 不呈现
- c++ - 如何找出哪个标头/包含在源代码中声明了哪些变量?
- laravel - 十月 CMS - 创建/更新表单中的范围字段类型或自定义