Как сделать http-эквивалентное перенаправление, которое сохраняет query_string и фрагмент_ид - PullRequest
5 голосов
/ 16 февраля 2012

В Javascript я могу перенаправить и сохранить строку запроса и идентификатор фрагмента следующим образом:

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

Для сайтов без Javascript вы можете использовать мета-заголовок http-эквивалент.Но это отбрасывает строку запроса и идентификатор фрагмента:

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

Есть ли способ сделать эквивалент, используя http-эквивалент = "refresh", который сохраняет строку запроса и идентификатор фрагмента?

Ответы [ 3 ]

6 голосов
/ 17 апреля 2015

Вы можете использовать JavaScript для обновления мета-тега с помощью строки запроса и хэша.

Обновление Лучшим подходом для IE8 + был бы тег noscript и перенаправление на основе JavaScript.Добавьте перенаправление в качестве атрибута назначения данных в элемент html, чтобы скрипт мог легко его получить.

<!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>
1 голос
/ 16 февраля 2012

Не без серверного языка сценариев, который помещает правильный URL-адрес в тег HTML (или отправляет заголовок Refresh напрямую).

0 голосов
/ 13 октября 2016

Я использую следующий скрипт (после формы, но до конца тела). Обязательный 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. Как правильно писать HTML, используя Javascript?
  2. Изменение содержимого метаобновления не меняет время обновления
  3. Использование document.write
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...