在JavaScript中,判断访问来源通常是通过分析document.referrer
属性来实现的。document.referrer
返回的是用户在访问当前页面之前所在的页面的URL。
基础概念:
document.referrer
: 这是一个只读属性,它返回的是前一个页面的URL,即用户是从哪个页面跳转过来的。相关优势:
应用场景:
示例代码:
// 获取访问来源
var referrer = document.referrer;
// 判断访问来源是否为特定网站
if (referrer.indexOf("example.com") !== -1) {
console.log("访问来源是example.com");
} else {
console.log("访问来源不是example.com");
}
// 更复杂的来源判断逻辑
function getReferrerInfo() {
var referrer = document.referrer;
var referrerInfo = {
isInternal: false, // 是否是内部链接
isSearchEngine: false, // 是否是搜索引擎
source: '' // 来源网站
};
// 判断是否是内部链接
if (referrer.indexOf(window.location.hostname) !== -1) {
referrerInfo.isInternal = true;
}
// 判断是否是搜索引擎
var searchEngines = ["google.", "bing.", "baidu.", "taobao.", "sogou."];
for (var i = 0; i < searchEngines.length; i++) {
if (referrer.indexOf(searchEngines[i]) !== -1) {
referrerInfo.isSearchEngine = true;
referrerInfo.source = searchEngines[i].replace(".", "");
break;
}
}
// 如果不是内部链接也不是搜索引擎,则记录来源网站
if (!referrerInfo.isInternal && !referrerInfo.isSearchEngine) {
referrerInfo.source = new URL(referrer).hostname;
}
return referrerInfo;
}
console.log(getReferrerInfo());
注意事项:
document.referrer
可能会因为用户隐私设置或者浏览器插件而为空或者不准确。document.referrer
可能会被设置为空。document.referrer
时,需要注意隐私保护,不要滥用用户来源信息。遇到的问题及解决方法:
document.referrer
为空,可能是因为用户直接输入了网址访问,或者浏览器设置了阻止发送referrer信息。这种情况下,无法通过JavaScript获取到访问来源。Referer
字段,而不是仅仅依赖客户端的JavaScript。领取专属 10元无门槛券
手把手带您无忧上云