IE中JS跳转丢失referrer问题的2个解决方法


Posted in Javascript onJuly 18, 2014

曾整理过一个各种页面跳转方法中referrer丢失的情况,其中提到,在IE中,使用类似 location.href = "a.html"这样的方式跳转页面时,在目标页面中 document.referrer的值会是空。这应该是IE的一个 bug。

大多数情况下,这个问题不会给我们带来麻烦,但有时候我们不得不用JavaScript来跳转,同时又要在下一个页面收集 document.refer,这时就得想想其他办法了。

Form GET方法

首先想到的是使用Form表单,用JS发起一个GET请求。代码类似下面这样:

function goToPage(url) {

    if (isIE) {

        // IE浏览器

        var frm = document.createElement("form");

        frm.action = url;

        frm.method = "GET";

        document.body.appendChild(frm);

        frm.submit();

    } else {

        // 非IE

        location.href = url;

    }

}

这个方法可以如同预期地工作,目标页面中 document.referrer能正常指向上一个页面。

A元素模拟点击方法

网上搜索了一下,发现司徒正美的博客上记录了这个问题的另一个处理方法:

//define for all browsers

function goto(url) {

    location.href = url;

}
//re-define for IE

if (isIE) {

    function goto(url) {

        var referLink = document.createElement('a');

        referLink.href = url;

        document.body.appendChild(referLink);

        referLink.click();

    }

}

原理很简单,先创建了一个 A元素,指定其 href属性为目标链接,然后再使用JS触发它的点击事件。经测试,在目标页面也能正常取到 document.referrer。

这个方法代码更简短一点,应该比上面的使用 form表单的方案更好一些。

Javascript 相关文章推荐
番茄的表单验证类代码修改版
Jul 18 Javascript
jquery 跨域访问问题解决方法(笔记)
Jun 08 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
Dec 17 Javascript
Javascript自定义函数判断网站访问类型是PC还是移动终端
Jan 10 Javascript
js读写json文件实例代码
Oct 21 Javascript
Javascript中arguments对象详解
Oct 22 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
Mar 09 Javascript
JavaScript中的this,call,apply使用及区别详解
Jan 29 Javascript
javascript之Array 数组对象详解
Jun 07 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
Apr 01 Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 #Javascript
javascript的document.referrer浏览器支持、失效情况总结
Jul 18 #Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 #Javascript
JQuery对表单元素的基本操作使用总结
Jul 18 #Javascript
jQuery新的事件绑定机制on()示例应用
Jul 18 #Javascript
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 #Javascript
$.each遍历对象、数组的属性值并进行处理
Jul 18 #Javascript
You might like
php结合安卓客户端实现查询交互实例
2015/05/05 PHP
PHPstorm快捷键(分享)
2017/07/17 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
18个非常棒的jQuery代码片段
2015/11/02 Javascript
[Bootstrap-插件使用]Jcrop+fileinput组合实现头像上传功能实例代码
2016/12/20 Javascript
Bootstrap 表单验证formValidation 实现远程验证功能
2017/05/17 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
nodejs require js文件入口,在package.json中指定默认入口main方法
2018/10/10 NodeJs
基于JavaScript获取base64图片大小
2019/10/18 Javascript
微信浏览器下拉黑边解决方案 wScroollFix
2020/01/21 Javascript
js实现星星海特效的示例
2020/09/28 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
python中正则表达式的使用详解
2014/10/17 Python
用Python生成器实现微线程编程的教程
2015/04/13 Python
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
Python使用SQLite和Excel操作进行数据分析
2018/01/20 Python
对Python中实现两个数的值交换的集中方法详解
2019/01/11 Python
Python字典fromkeys()方法使用代码实例
2020/07/20 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
IE支持HTML5的解决方法
2009/10/20 HTML / CSS
ghd法国官方网站:英国最受欢迎的美发工具品牌
2019/04/18 全球购物
自我评价范文点评
2013/12/04 职场文书
公路绿化方案
2014/05/12 职场文书
责任书范本
2014/08/25 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
关于运动会广播稿200字
2014/10/08 职场文书
2014年采购工作总结
2014/11/20 职场文书
幼儿园大班教师个人总结
2015/02/05 职场文书
成绩单家长意见
2015/06/03 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
Java版 简易五子棋小游戏
2022/05/04 Java/Android