Мета-обновление не работает? - PullRequest
40 голосов
/ 07 февраля 2009

У меня есть страница, использующая что-то вроде

<meta http-equiv="refresh" content="0;url=http://example.com/" />

но для определенных пользователей на определенной рабочей станции это не работает. Это в IE. Что-то не так с куки или настройкой где-то, что может привести к сбою? Я никогда не слышал о такой вещи.

Ответы [ 7 ]

72 голосов
/ 07 сентября 2009

Проблема в том, что когда IE видит это:

<meta http-equiv="refresh" content="0;http://www.example.com" />

ожидает, что атрибут содержимого будет содержать число. IE проверяет URL-адрес только в том случае, если атрибут содержимого содержит «URL =», поэтому перенаправление, наиболее пригодное для использования во всех браузерах, таково:

<meta http-equiv="refresh" content="0;URL=http://www.example.com" />

Приведенный выше пример перенаправляет неумышленно, но если вы измените 0 на другое число, оно будет ждать столько секунд. Надеюсь, что все это имеет смысл, это должно работать просто отлично, но я все еще думаю, что моя первая идея была лучшей.

34 голосов
/ 07 февраля 2009

В Internet Explorer есть настройка безопасности, которая не позволяет обновлять метатеги. На вкладке «Безопасность» выберите «Пользовательский уровень» и «Обновление метатега» в разделе «Разное». Если это отключено, мета-обновление не будет работать.

Помимо возможности выборочного его отключения, он автоматически отключается, если для уровня безопасности IE установлено значение «Высокий» [наблюдается в IE9].

5 голосов
/ 07 февраля 2009

это действительно старая версия IE? если это так, попробуйте:

<meta http-equiv="refresh" content="0;url=http://example.com/"> </meta>

Ему нужен пробел. Редактор HTML будет жаловаться, но просто проигнорируйте его.

3 голосов
/ 10 июня 2010

Проверьте это решение. Он обрабатывает как javascript, так и meta-refresh одновременно: Мета-обновление и JavaScript

2 голосов
/ 07 февраля 2009

META-тег не является пустым тегом и не имеет закрывающего тега в HTML, только в XHTML. (Если вы действительно отправляете XHTML, он все равно может работать неправильно на старых версиях IE, есть только обходные пути для отправки XHTML на более старые версии IE.)

Попытка:

<meta http-equiv="refresh" content="0;url=http://example.com/">

W3 Schools META Tag Description

Вы также можете попробовать:

  1. Проверка основных и вспомогательных версий IE. Вы можете сделать это в меню справки-> о программе.
  2. IE исторически запутывал все имена файлов и MIMEtypes. Убедитесь, что вы отправляете свой HTML-файл в виде файла расширения htm или html, и что эти типы файлов настроены на вашем сервере для отправки text / html mimetype.
  3. Убедитесь, что ваш сервер не отправляет конфликтующий HTTP-заголовок метаобновления.
0 голосов
/ 27 декабря 2013

В случае, если кто-либо попытается использовать метаобновление для перенаправления на новый URL в приложениях Facebook (либо в приложении Tab Tab, либо в приложении IFRAME), тег каким-то образом отключается Facebook.

Обходной путь:

<script>
top.window.location = 'http://example.com';
</script>

Не забудьте указать "top", так как приложения Facebook находятся в IFRAME.

0 голосов
/ 07 февраля 2009

Просто дикая догадка: может быть, на тех машинах установлены блокировщики рекламы, где не работает перенаправление. Не могу придумать ни одной другой причины, по которой эта распространенная техника работает на некоторых машинах, в то время как на других она вам не подходит.

...