如何进行保留query_string和fragment_id的http-equiv重定向

时间:2012-02-15 21:12:49

标签: javascript html redirect

在Javascript中,我可以重定向并保存查询字符串和片段ID,如下所示:

window.location = "NEW_LOCATION" + window.location.search + window.location.hash;

对于没有Javascript的网站,您可以使用http-equiv元标头。但这会丢弃查询字符串和片段ID:

<head>
    <meta http-equiv="Refresh" content="300; url=NEW_LOCATION" />
</head>

有没有办法使用http-equiv =“refresh”来保存查询字符串和片段ID吗?

3 个答案:

答案 0 :(得分:6)

您可以使用JavaScript使用查询字符串和散列更新元标记。

更新 IE8 +的更好方法是使用noscript标记和JavaScript驱动的重定向。在html元素上添加重定向作为data-destination属性,以便脚本可以轻松地抓取它。

&#13;
&#13;
<!DOCTYPE html>
<html data-destination="http://stackoverflow.com">
  <head>
    <noscript><meta id="redirect" http-equiv="refresh" content="0; url=http://stackoverflow.com"></noscript>
  </head>

  <body>
    This page has moved. Redirecting...
    
  <!-- Redirect in JavaScript with meta refresh fallback above in noscript -->
  <script>
  var destination = document.documentElement.getAttribute('data-destination');
  window.location.href = destination + (window.location.search || '') + (window.location.hash || '');
  </script>
  </body>
</html>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

不是没有服务器端脚本语言,它将正确的URL放在HTML标记中(或直接发送Refresh标题)。

答案 2 :(得分:0)

我正在使用以下脚本(在表格之后,但在结束之前)。必需的URL(“hidAutoURL”)首先存储在隐藏变量中(从服务器端)。

document.write用于更新meta

<BODY>

    <FORM>
    </FORM>

    <script>
        function getAutoURL()
        {
            var url = document.getElementById('hidAutoURL').value;
            return url;
        }

        //Update META for auto-refresh
        var configuredTime = document.getElementById('hidRefrTime').value;
        var content = configuredTime + ';url=' + getAutoURL('url');
        document.write('<meta http-equiv="refresh" content="'+content + '"/>');

    </script>

</BODY>

<强>参考

  1. What is the correct way to write HTML using Javascript?
  2. Changing the content of meta refresh does not change refreshing time
  3. Using document.write