我发布了类似的东西,但在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');
}
答案 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推荐人,而不是你想到的,这是一个非常好的方法。