@Javascript中document.referrer在IE中失效问题,解决方法?(第3条中有,解决方法,就是用a表标签代替window.location跳转。)
1 用脚本跳到一个目标页面去
<a onclick="window.open('http://www.gyyx.cn/MainFrame.aspx')"> Opener</a>
或者
<a onclick="window.location='http://www.gyyx.cn/MainFrame.aspx'"> location </a>
2 目标页面取来源页面URL
document.write("js获取上(前)一页url:【" + document.referrer + "】<br>");
3 (问题)我们会发现:如果是IE及其以IE为内核的浏览器(像maxthon、360浏览器)会读取不到来源页。
---找了一个替代方案:
function redirect(url) {
if (/MSIE (/d+/./d+);/.test(navigator.userAgent)) {
//如果是ie浏览器,就添加一个a标签对象,然后跳转过去。用a标签对象代替window.location=url。
var referLink = document.createElement('a');
referLink.href = url;
document.body.appendChild(referLink);
referLink.click();
}
else {
location.href = url; //非ie浏览器,可以不用上边方法处理。
}
4 再次在上边1步骤中调用:<a onclick="redirect('http://www.gyyx.cn/MainFrame.aspx')"> 自改代码 </a>
* 发现能获取了:
js获取上(前)一页url:【http://www.gyyx.cn/UnDependentPage.aspx】
***总结:
1,建议,页面跳转时都用a标签跳转,直接a标签跳转,或者使用上边方法跳转。
2,注意:在js上用document.referrer获取值时,在IE下容易丢失,如果在.net下,试下<%=Request.UrlReferrer.AbsolutePath%>
---document.referrer在ie10以下都获取不到值,经测试,同样在后台cs中也获取不到,Request.UrlReferrer对象是空的,直接调用Request.UrlReferrer.AbsolutePath属性时,会报System.NullReferenceException: 未将对象引用设置到对象的实例异常。