Chrome后退按钮重定向到错误的网站

时间:2016-05-21 20:41:17

标签: javascript node.js google-chrome xmlhttprequest

所以我使用NodeJs并使用以下函数从服务器请求内容,我想在浏览器中显示。 服务器返回一个完整的html页面。

当我执行以下步骤时,Chrome会跳过调用重定向代码的原始页面。

  1. 我通过chrome
  2. 中的新标签调用我的网站
  3. 代码执行
  4. 我被重定向到包含服务器响应内容的页面(使用 var win = ... )或覆盖当前文档(使用 document.open();. .. 的)
  5. 问题:如果我现在使用后退按钮,Chrome会将我导航到"新标签"页面,而不是我重定向的页面。
  6. 使用Firefox时不会出现此问题。

    我读到这是chrome的一个老问题,但有一些解决方法吗?

    代码:

    function requestLink(id) {
      var xhr = new XMLHttpRequest();
      xhr.open("POST", "http://localhost:1234/link", true);
      xhr.setRequestHeader("Content-Type", "application/json");
      xhr.onload = function () {
          if (this.status == 200) {
              // possibility 1:
              // document.open();
              // document.write(this.response);
              // document.close();
    
              // possibility 2:
              var win = window.open("", "_self");
              win.document.write(this.response);
          }
      };
      xhr.send(JSON.stringify({requested: id}));
    }
    

1 个答案:

答案 0 :(得分:0)

我猜这是预期的行为。

要操纵浏览器历史记录,请查看此页面:https://developer.mozilla.org/en-US/docs/Web/API/History_API

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");

这仅适用于较新的浏览器......