首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >IE在location.replace后的document.referrer为空

IE在location.replace后的document.referrer为空
EN

Stack Overflow用户
提问于 2009-12-12 04:06:30
回答 2查看 19.9K关注 0票数 17

我有一个网站,它做一个复杂的搜索,并有一个“加载”页面。在加载页面上,我们使用:

<body onload="window.location.replace('results_page.php');" >

或者:

<body onload="window.location = 'results_page.php';" >

上面两个选项之间的唯一区别是location.replace()忽略浏览器历史记录中的页面。

在results_page上,我需要阅读referrer以进行跟踪:

<script> alert(document.referrer); </script>

这在除IE之外的所有浏览器上都工作得很好,IE会返回document.referrer的空值。

有没有人知道更好的方法来做一个javascript重定向,给IE一个引用的值?

附注:这个例子比在生产中要简单得多。

EN

回答 2

Stack Overflow用户

发布于 2009-12-12 04:40:07

看起来这只是与IE用户做生意的成本。没有hack就不能修复。现在正在做一个。谢谢你的倾听。

http://webbugtrack.blogspot.com/2008/11/bug-421-ie-fails-to-pass-http-referer.html

我使用了变通方法来实现这个功能。就像一种护身符。

<script type="text/javascript" >            
function redirect(url) {
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
        var referLink = document.createElement('a');
        referLink.href = url;
        document.body.appendChild(referLink);
        referLink.click();
    } else {
        location.href = url;
    }
}
</script>
票数 24
EN

Stack Overflow用户

发布于 2017-04-05 03:28:34

基于Matt回答,此代码片段还检测IE11并在新选项卡中打开url。在Microsoft Edge浏览器上,无需额外更改即可使用window.location.replace传递document.referrer。

<script type="text/javascript">
  function openUrlNewTab(url) {
    //use userAgent to detect <IE11 and window obj to detect IE11
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || 
       (!!window.MSInputMethodContext && !!document.documentMode)) {
      var el = document.createElement('a');
      el.href = url;
      el.target = '_blank';
      document.body.appendChild(el);
      el.click();
    } else {
      window.open(url);
    }
  }
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1890532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档