Обмен изображениями на основе реферера - PullRequest
0 голосов
/ 30 апреля 2018

Я написал что-то похожее, но понял, что мой код нужен в JQuery. Я пытаюсь заменить изображение SRC, если реферальный URL содержит facebook.com. Код, который я использую, меняет изображение независимо от ссылающегося URL. Я СУПЕР новичок в JS и JQ, любая помощь будет принята с благодарностью. Спасибо!

if (!/facebook\.com/.test(document.referrer)) {
jQuery('#staffImage img').attr('src', 
'img1');
} else{
jQuery('#staffImage img').attr('src', 'img2.jpg');
}

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

Реферер facebook - это исключение, а не правило, верно? Поэтому я хотел бы рассмотреть замену этих двух блоков условий так, чтобы else - это то, что происходит, когда это обычный сценарий, а не наличие else для необычного сценария. Вам также следует запускать test только для части имени хоста URL-адреса ссылающегося сайта, которую можно получить, анализируя URL-адрес в объекте URL. Кроме того, одно из ваших условий имеет значение src, установленное на img1 вместо img1.jpg, как указано cngodles. Это похоже на недосмотр, поэтому давайте предположим, что вы имели в виду img1.jpg. Собрав все воедино, реорганизованный код будет выглядеть так:

try {
    var referrerHostName = new URL(document.referrer).hostname;
} catch {
    var referrerHostName = "";
}

if (/facebook\.com/.test(referrerHostName)) {
    jQuery('#staffImage img').attr('src', 'img2.jpg');
} else {
    jQuery('#staffImage img').attr('src', 'img1.jpg');
}

Следует также учитывать, что document.referrer происходит из заголовка Referrer, что означает, что Referrer может быть подделан. Он также может быть пустым при многих обстоятельствах, в том числе, когда браузеры настроены не отправлять заголовки Referrer в качестве дополнительной меры конфиденциальности. Например, если вы нажмете на ссылку URL, которую я предоставил выше, и на этой странице попробуйте console.log(document.referrer), это будет пустая строка, поскольку SO автоматически устанавливает атрибут rel="nofollow noreferrer" для ссылок, предоставленных в ответах.

Это все, что говорит о том, что если вы хотите предоставить что-то безопасное или конфиденциальное для определенных запросов, использование document.referrer не является хорошим способом сделать это. Однако, если вам просто нужен другой пользовательский интерфейс, который отлично подходит для тех, кто не использует Facebook, а не тот, который вы имели в виду, это совершенно хороший подход.

0 голосов
/ 30 апреля 2018

Источник в вашем примере показывает, что для img1 должно быть установлено значение src, которое, вероятно, должно быть равно img1.jpg или какому-либо правильному имени файла.

...