【发布时间】:2022-01-26 12:21:45
【问题描述】:
我在配置 jQuery.Lazy() 以处理附加了哈希的图像时遇到问题。在 asp.net 核心 Razor 页面中,您可以使用 Image Tag Helper,以便服务器在 src 附加一个哈希值,如果图像被修改,该哈希值会被检查/更新。语法非常简单:
对于<img>,只需添加asp-append-version="true",服务器就会自动将哈希附加到src。即:
<img src="/images/Photo.jpg" asp-append-version="true">
在浏览器中显示为:
<img src="/images/Photo.jpg?v=4jjcjhwsV9YZ1K8lXgg_50rci1ju_mNaz-HABqCvPFk">
问题是:它只能应用于 src,因此存在问题。
所以当我像这样将 .lazy 添加到 <img> 时:
<img class="lazy" src="/images/PhotoPlaceholder.png" data-src="/images/Photo.jpg" asp-append-version="true">
.lazy 效果很好(图像按预期淡入),但 HTML 现在是这样的:
<img class="lazy" src="/images/PhotoPlaceholder.png?v=4jjcjhwsV9YZ1K8lXgg_50rci1ju_mNaz-HABqCvPFk" data-src="/images/Photo.jpg">
显然,现在哈希将不起作用,因为它附加到 PhotoPlaceholder.png 而不是 Photo.jpg。那么,如何配置 jQuery.Lazy() 以使用哈希?使用jQuery.Lazy() 或一些额外的jquery?顺便说一句:我已经尝试过使用“属性”选项等,但无法使其正常工作。任何人都知道如何解决这个问题?我不能是唯一遇到此问题的人。
此外,这甚至可能吗?还是我只需要选择一个功能而不是另一个?我需要版本哈希检查,因为图像可能会被用户更改,因此它们需要自动刷新(而不是每个人都必须通过点击页面上的<ctrl> F5 来进行缓存清空重新加载)。我也了解浏览器使用/需要 <src> 来显示图像(从这个角度来看,没有什么可以做的),但我希望有人能想出解决这个难题的方法。
我的 jQuery.Lazy() 非常简单:
$(".lazy").Lazy({
effect: 'fadeIn',
effectTime: 1000
});
感谢您的任何帮助/建议... :)
【问题讨论】:
-
请参考this answer扩展实现
data-src赋值的方法。
标签: jquery asp.net-core lazy-loading razor-pages