您的位置:首页 > 产品设计 > UI/UE

获取页面来源URL ,源页面URL,Request.UrlReferrer为空的问题

2013-02-28 16:52 447 查看
最近遇到获取源页面URL遇到问题,整理了一下

获取页面来源URL,对于访问来源统计,防盗链等地方,用处很大。一般我们用 Request.UrlReferrer 方法获取源页面URL但是对于页面通过IE

1. window.open,

2. window.location.href,

3.location.replace(),等方式跳转时,获取为空值,只有在<a href=>有效。据说 IE浏览器referrer清空了。所以获取不到

解决方案

1. 对于window.location.href,location.replace()跳转方式,思路是这样,通过js创建一个a标签代替跳转

如代码(源页面代码)

  Javascript代码

function Redirect(url) {
//获取浏览器用户代理
var userAgent = navigator.userAgent.toLowerCase();
var is_opera = userAgent.indexOf('opera') != -1 && opera.version();
var is_ie = (userAgent.indexOf('msie') != -1 && !is_opera) && userAgent.substr(userAgent.indexOf('msie') + 5, 3);
//如果是IE浏览器
if (is_ie)
{
//创建A标签
var referLink = document.createElement('a');
referLink.href = url;
document.body.appendChild(referLink);
//模拟点击
referLink.click();
}
else
{
//其他浏览器不变
location.href = url;
}
}


HTML调用

<a onclick="Redirect('Default1.aspx')"> 自改代码 </a>


(目标页面代码)

获取可以直接用Request.UrlReferrer 得到源页面

2.当window.open时,因为window.open是唯一可以打开一个没工具栏,状态栏的页面的方法,所以某些情况下是不可替代的
(源页面代码)

Javascript代码

function Redirect(url)
{
//打开一个无状态栏的页面
window.open(url,'','toolbar=no, menubar=no,  scrollbars=yes, resizable=yes, location=no, status=no');
}


HTML调用

<a onclick="Redirect('Default1.aspx')"> 自改代码 </a>


(目标页面代码)

function getFrom()
{
//获取源页面地址;window.opener 为获取window.opener源页面的BOM对象
var url =window.opener.location;
//获取本页面地址
var localUrl=window.location.href.toString();
window.alert("来源地址:"+url+"   本地址:"+localUrl);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: