2013-06-23 3 views
0

Я пытаюсь настроить этот hotlink prevention method, если URL-адреса img будут добавлены? I только при посещении браузером с поддержкой JavaScript, а не ботами.jQuery: любой способ добавить переменную к img без ее загрузки дважды?

Используя это в $(document).ready(function() работ:

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

Однако, это вызывает IMG дважды загрузки.

Есть ли другой способ добавления параметра для посетителей, которые не будут вызывать двойную нагрузку? И чтобы уточнить, я не имею в виду, что изображение появляется дважды на странице, но сервер дважды попадает по мере изменения URL-адреса.

+0

Что такое тег img? – boisvert

+0

Ian

+0

Упс ... должно быть \t Ian

ответ

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"); 

, где «все» это адрес, который будет возвращать версию ботов - например, низкое изображение с водяным знаком, и «что?» возвращает хороший.

В этом случае загружаются два изображения, первое из которых предназначено для ботов.

+0

Кроме того, вы можете продолжить загрузку изображения дважды, но сначала загрузите загрузку с низким разрешением, а затем правильный, когда jquery начнет работать. Что, вероятно, связано с вашей защитой от хотлинков? – boisvert

+0

Ну, в соответствии со статьей, с которой я связан, это не столько версия с высоким разрешением/низким разрешением, но с двумя разными URL-адресами (для ботов и людей), поэтому конфигурация nginx может выполнять конкретные действия, основанные на присутствии '? i' в URL. – Ian

+0

Один из моих комментариев исчез. Я хотел спросить, как jQuery найти в вашей версии найти фактический src img, если местоположение файла не в HTML? Я помещаю это в файл JavaScript для Sitewide, поэтому он должен добавить его ко всем img-тегам класса myimg, поэтому размещение файла в файле JS не будет достаточно общим. – Ian

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"); 
} 

Я обновил свой ответ, чтобы сохранить путь в дополнительном атрибуте, который не будет загружать изображение по умолчанию.

+0

Спасибо. Он избавляется от двойной нагрузки, но случайный человек, бегущий без JavaScript, не увидит изображения, верно? Возможно, jQuery - это не мой ответ. Один человек, с которым я говорил, предложил запустить Larnish и использовать 'vcl_recv', чтобы вырезать? I при обслуживании ботов. – Ian

+0

Это правильно. В конце концов, хотя это становится взвешивающим упражнением относительно того, увеличивает ли индексация изображения Google, чем потеря пользовательских браузеров, не поддерживающих javascript. Я думаю, что у вас возникнут проблемы с реализацией чего-то вроде этой клиентской стороны без javascript. Другой альтернативой может быть использование php/asp/asp.net или, возможно, даже php/IIS для проверки запрашивающего URL-адреса? – SlitCanvas