网络延迟图像无法加载
web deferred image fail to load
我是网络开发的新手,我在使我的网络快速加载方面遇到了困难。
所以我 found this article 并且实现了它。当可视化我的页面时,我发现图像根本没有呈现。我得到以下图像:
图片html
<img src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="~/images/menunavegacion.png" />
脚本
<script>
function init() {
var imgDefer = document.getElementsByTagName('img');
for (var i = 0; i < imgDefer.length; i++) {
if (imgDefer[i].getAttribute('data-src')) {
imgDefer[i].setAttribute('src', imgDefer[i].getAttribute('data-src'));
}
}
}
window.onload = init;
</script>
调试信息
此外,我用 chrome 调试它,它似乎正确地切换了真实图像和假图像。但是网络没有加载正确的。
我错过了什么?
感谢您的帮助
当你将src
属性中的图片路径设置为~/images/img.png
时,asp.net会解析该路径并生成一个url相对于应用程序基url: /app_path/images/img.png
.
然而,属性 data-src
的值未被处理,看起来像 ~/images/img.png
(仍以 ~
为前缀)。当你用data-src
的值替换src
的值时,浏览器将图像的路径解析为http://sample.com/~/images/img.png
。您的服务器上可能不存在此路径,您会收到错误 404。
综上所述,您需要使用MVC中的方法ResolveUrl
in WebForms or Url.Content
删除~
。
我是网络开发的新手,我在使我的网络快速加载方面遇到了困难。
所以我 found this article 并且实现了它。当可视化我的页面时,我发现图像根本没有呈现。我得到以下图像:
图片html
<img src="data:image/png;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=" data-src="~/images/menunavegacion.png" />
脚本
<script>
function init() {
var imgDefer = document.getElementsByTagName('img');
for (var i = 0; i < imgDefer.length; i++) {
if (imgDefer[i].getAttribute('data-src')) {
imgDefer[i].setAttribute('src', imgDefer[i].getAttribute('data-src'));
}
}
}
window.onload = init;
</script>
调试信息
此外,我用 chrome 调试它,它似乎正确地切换了真实图像和假图像。但是网络没有加载正确的。
我错过了什么?
感谢您的帮助
当你将src
属性中的图片路径设置为~/images/img.png
时,asp.net会解析该路径并生成一个url相对于应用程序基url: /app_path/images/img.png
.
然而,属性 data-src
的值未被处理,看起来像 ~/images/img.png
(仍以 ~
为前缀)。当你用data-src
的值替换src
的值时,浏览器将图像的路径解析为http://sample.com/~/images/img.png
。您的服务器上可能不存在此路径,您会收到错误 404。
综上所述,您需要使用MVC中的方法ResolveUrl
in WebForms or Url.Content
删除~
。