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

 更新时间:2014年07月18日 12:08:32   投稿:junjie  
这篇文章主要介绍了IE中JS跳转丢失referrer问题的2个解决方法,算是IE的一个BUG吧,本文提供了2个方法解决这个问题,需要的朋友可以参考下

曾整理过一个各种页面跳转方法中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实现快速排序(Quicksort)的算法详解

    Javascript实现快速排序(Quicksort)的算法详解

    排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一,要想成为合格的程序员,就必须理解和掌握各种排序算法。
    2015-09-09
  • javascript中使用未定义变量或值的情况分析

    javascript中使用未定义变量或值的情况分析

    这篇文章主要介绍了javascript中使用未定义变量或值的情况,较为详细的分析了javascript中使用未定义值的情况,需要的朋友可以参考下
    2016-07-07
  • js获取图片的base64编码并压缩

    js获取图片的base64编码并压缩

    这篇文章主要介绍了js获取图片的base64编码并压缩,帮助大家更好的理解和使用js,感兴趣的朋友可以了解下
    2020-12-12
  • js Function类型

    js Function类型

    函数就是对象,而函数名是指向函数对象的指针,不会与某个函数绑定
    2011-12-12
  • JavaScript学习小结(7)之JS RegExp

    JavaScript学习小结(7)之JS RegExp

    在js中,正则表达式是由一个RegExp对象表示的,RegExp 是正则表达式的缩写。RegExp简单的模式可以是一个单独的字符。更复杂的模式包括了更多的字符,并可用于解析、格式检查、替换等等。可以使用一个RegExp()构造函数来创建RegExp对象,也可以使用直接量语法
    2015-11-11
  • 用javascript 控制表格行的展开和隐藏的代码

    用javascript 控制表格行的展开和隐藏的代码

    用javascript 控制表格行的展开和隐藏的代码...
    2007-08-08
  • 无间断滚动marquee的详细用法解析

    无间断滚动marquee的详细用法解析

    无间断滚动marquee的详细用法解析...
    2006-08-08
  • js 二进制流转图片的操作方法

    js 二进制流转图片的操作方法

    这篇文章主要介绍了js 二进制流转图片的操作方法,接收数据大家需要注意,如果后端的接口是get方法,可以直接使用img标签,本文通过示例代码讲解的非常详细,需要的朋友参考下吧
    2023-12-12
  • JavaScript中的字符串操作详解

    JavaScript中的字符串操作详解

    这篇文章介绍了JavaScript中的字符串操作,有需要的朋友可以参考一下
    2013-11-11
  • 前端强大的图片预览组件Viewer.js使用方法

    前端强大的图片预览组件Viewer.js使用方法

    这篇文章主要给大家介绍了关于前端强大的图片预览组件Viewer.js使用方法的相关资料,Viewer.js是一款强大的图片查看器,虽然简单且易上手,但是却并不影响其在图片查看方面的强大功能,同时这款优秀的插件配置操作起来也非常的方便,需要的朋友可以参考下
    2024-01-01

最新评论