基于refferer的图像交换

时间:2018-04-30 17:22:39

标签: jquery src referrer

我发布了类似的东西,但在JQuery中实现了我需要的代码。如果引荐URL包含facebook.com,我正在尝试交换图像SRC。我正在使用的代码是交换图像,无论引用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 :(得分:0)

示例中的来源显示 img1 设置为src,这可能需要 img1.jpg 或任何正确的文件名。

答案 1 :(得分:0)

Facebook推荐人是例外,不是规则,对吗?所以我会考虑交换这两个条件块,以便else是通常情况下发生的情况,而不是让else用于异常情况。您还应该只针对引荐来源网址的主机名部分运行test,您可以通过将网址解析为URL对象来获取该网址。此外,正如cngodles所指出的,您的一个条件是将src设置为img1而不是img1.jpg。这似乎是一种疏忽,所以我们假设你的意思是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标头作为增加的隐私措施时。例如,如果您点击我在上面提供的URL链接,并在该页面上尝试console.log(document.referrer),它将是一个空字符串,因为SO会自动在链接上设置属性rel="nofollow noreferrer"在答案中提供。

这就是说,如果您想要为某些请求提供安全或保密的内容,使用document.referrer并不是一个好方法。但是,如果你只是想要一个不同的用户体验,这可以提供给非Facebook推荐人,而不是你想到的,这是一个非常好的方法。