js获取载入当前页面的来源

本文探讨了在JavaScript中使用`document.referrer`获取页面来源的情况,列举了在哪些场景下无法获取到referrer信息,包括直接输入URL、刷新页面、微信环境、新窗口打开、跨域等,并提到了`history.back()`或`history.go(-1)`作为返回上一级菜单的替代方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在给百度的朋友解决客户网站跳转非法页面的问题时, 看到了这么一段代码:

if(window.name != 'cc'){
	var r = document.referrer;
	r = r.toLowerCase();
	var aSites = new Array('sm.','baidu.','soso.','so.','360.','sogou.','gougou.');
	var b = false;
	for (i in aSites){
		if (r.indexOf(aSites[i]) > 0){
			b = true;
			break;
		}
	}
	
	if(b)
	{
	
		self.location = 'http://www.非法.com'; 
		window.adworkergo = 'cc';
	}
}

能看出这段代码使用 document.referrer来获取从哪个页面跳转过来的, 并进行了判断. 我之前是没有用过这个方法的, 看了很多同行的博客之后, 了解到document.referrer关于它的一些情况, 在下面的场景使用时无法获得 referrer 信息.

1. 直接在浏览器中输入地址
2. 使用location.reload()刷新(location.href或者location.replace()刷新有信息)
3. 在微信对话框中,点击进入微信自身浏览器
4. 扫码进入微信或QQ的浏览器
5. 直接新窗口打开一个页面
6. 从https的网站直接进入一个http协议的网站
7. a标签设置rel=“noreferrer”(兼容IE7+)
8. meta标签来控制不让浏览器发送referer
9. 点击 flash 内部链接
10. Chrome4.0以下,IE 5.5+以下返回空的字符串
11. 使用 修改 Location 进行页面导航的方法,会导致在IE下丢失 referrer
12. 跨域
13.<meta content="never" name="referrer">

如果要返回上一级菜单, pc端还有一种方法***history.back()或者history.go(-1)***来进行返回

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值