0

我试图通过让 img url 仅在由启用 JavaScript 的浏览器而不是机器人访问时才获得附加的 ?i来调整这种防止热链接的方法。

$(document).ready(function()作品中使用它:

var img= $("img.myimg");
img.attr("src", img.attr("src")+"?i");

但是,它会导致 img 加载两次。

是否有任何其他方法可以为不会导致双重负载的人类访问者附加参数?澄清一下,我并不是说图像在页面上显示了两次,而是说随着 url 的变化,服务器会被命中两次。

4

2 回答 2

1

如果您希望图像不仅加载一次,并且不被机器人以最佳版本看到,那么您只能在 JQuery 中加载它,一次。然后slitcanvas的答案适用:

<img class="myimg" notthesrc="whatever.jpg" />

在 JQuery 中:

var img= $("img.myimg");
img.attr("src", img.attr("notthesrc")+"?i");

这样,图像就不会以 HTML 格式加载,也不会由机器人加载。它仅由 JQuery 加载。

=========

如果您希望 Google 图像和其他机器人可以找到图像的一个版本,然后再找到一个不同的版本(更大、更好、没有版权声明或水印等),那么您将无法避免拥有两张图像:

<img class="myimg" src="whatever" />

在 JQuery 中:

var img= $("img.myimg");
img.attr("src", img.attr("src")+"?i");

其中“whatever”是返回机器人版本的 URL - 例如带有水印的低分辨率图像,“whatever?i”返回好的图像。

在这种情况下,将加载两个图像,第一个用于机器人。

于 2013-06-23T10:38:51.857 回答
0

难道你不能:

<img class="dheimg" presrc="/location-of-file/name.jpg" src="" [height/width/alt] />

没有 src 标记,然后在页面加载后使用 javascript 添加它?

$(document).ready(function(){
    var img= $("img.myimg");
    img.attr("src", img.attr("presrc")+"?i");
}

我已经更新了我的答案,将路径存储在默认情况下不会加载图像的附加属性中。

于 2013-06-23T10:36:54.947 回答