You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

根据Referrer切换图片功能失效,请求技术协助

解决根据引荐来源切换背景图片的问题

嘿,我帮你排查下代码里的问题,很快就能搞定啦~

原代码的核心问题

  • 无效的else if条件:else if(image=2)这部分完全不成立——image变量根本没定义,而且你用了赋值符号=(把2赋值给image),不是比较运算符===,这直接导致逻辑断裂。
  • 过于严格的referrer匹配:用户从Facebook的具体页面(比如帖子、个人主页)访问时,referrer不会是精确的https://www.facebook.com/,而是带路径的(比如https://www.facebook.com/your-post),所以全等判断会漏掉绝大多数情况。

修正后的代码

直接简化逻辑,用更灵活的匹配方式:

// 先获取图片元素,避免重复DOM查询
const targetImage = document.getElementById('modImage');

// 检查引荐来源是否包含Facebook域名(兼容各种子页面)
if (document.referrer.includes('facebook.com')) {
    targetImage.src = "image2.jpg"; // Facebook来源显示专属图片
} else {
    targetImage.src = "image1.jpg"; // 其他来源显示默认图片
}

额外优化建议

  1. 兼容大小写问题:有些情况下referrer的域名可能是大写(比如FACEBOOK.COM),可以转成小写再判断:
const referrer = document.referrer.toLowerCase();
if (referrer.includes('facebook.com')) {
    // ...逻辑不变
}
  1. 扩展多平台匹配:如果需要支持更多社交平台或来源,可扩展条件:
const targetImage = document.getElementById('modImage');
const referrer = document.referrer.toLowerCase();

if (referrer.includes('facebook.com') || referrer.includes('instagram.com')) {
    targetImage.src = "social-media-image.jpg";
} else if (referrer.includes('google.com')) {
    targetImage.src = "search-engine-image.jpg";
} else {
    targetImage.src = "default-image.jpg";
}
  1. 处理referrer为空的情况:部分浏览器隐私设置会隐藏引荐来源,此时document.referrer为空字符串,上面的代码会自动走到else分支显示默认图,这是合理的处理方式。

内容的提问来源于stack exchange,提问作者BradleyB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:45:49