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 相关文章推荐
超级兔子让浮动层消失的前因后果
Mar 09 Javascript
JQUERY 获取IFrame中对象及获取其父窗口中对象示例
Aug 19 Javascript
浅析Cookie中的Path与domain
Dec 18 Javascript
js 鼠标移动显示图片的简单实例
Dec 25 Javascript
JavaScript实现SHA-1加密算法的方法
Mar 11 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
AngularJS基础 ng-repeat 指令简单示例
Aug 03 Javascript
js给table赋值的实例代码
Oct 13 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
Nov 03 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
JavaScript实现的滚动公告特效【基于jQuery】
Jul 10 jQuery
Layui弹出层 加载 做编辑页面的方法
Sep 16 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
德劲1103的维修打理经验
2021/03/02 无线电
PHP的cURL库功能简介 抓取网页、POST数据及其他
2011/04/07 PHP
php代码审计比较有意思的例子
2014/05/07 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
php实现图片文件与下载文件防盗链的方法
2014/11/03 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
win7下安装配置node.js+express开发环境
2015/12/06 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
Vue自定义指令封装节流函数的方法示例
2018/07/09 Javascript
Vue Router去掉url中默认的锚点#
2018/08/01 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
基于vue通用表单解决方案的思考与分析
2019/03/16 Javascript
Vue+scss白天和夜间模式切换功能的实现方法
2021/01/05 Vue.js
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
Python实现登录接口的示例代码
2017/07/21 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
实习生体会的自我评价范文
2013/11/28 职场文书
2014年体育教师工作总结
2014/12/03 职场文书
铁路安全反思材料
2014/12/24 职场文书
小学感恩节活动总结
2015/03/24 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
Kubernetes控制节点的部署
2022/04/01 Servers