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

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

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.

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

你可能感兴趣的:(前端开发)