#html #internet-explorer #refresh
#HTML #internet-explorer #обновить
Вопрос:
До смешного простой HTML-файл:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="refresh" content="5; URL=./test.html">
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
Когда я открываю файл с помощью любого браузера, браузеры работают нормально и перезагружают страницу каждые 5 секунд.
Но когда я обновляю страницу вручную между двумя обновлениями (F5), IE (версия 8.0.6001.18702) больше не оценивает meta
тег, и страница больше не обновляется. Opera, FF и Safari по-прежнему работают должным образом и обновляются каждые 5 секунд.
Кто-нибудь еще сталкивался с подобной проблемой? Как (помимо использования Javascript, конечно) можно решить эту проблему?
Редактировать 1:
Проверил это поведение также на IE6, так что я предполагаю, что это общая проблема IE. Есть какие-либо подсказки, как это преодолеть?
Редактировать 2:
Чтобы продолжить эту тему:
- это известная проблема или стоило бы куда-нибудь отправить сообщение об ошибке (куда?)?
- Может ли кто-нибудь проверить это поведение с IE7 и / или IE9?
Комментарии:
1. Вообще говоря, органы по стандартизации неодобрительно относятся к использованию нестандартного МЕТА-ОБНОВЛЕНИЯ. Сказав это, вы пробовали использовать полный URL вместо относительного URL? Если вы пытаетесь перезагружать одну и ту же страницу снова и снова, вы пытались полностью опустить URL?
2. @EricLaw: сделайте это ответом, и я проверю его! Пропуск URL действительно решает проблему!
Ответ №1:
В IE 9 это работает нормально.
PS вы пропустили несколько кавычек, должно быть:
<meta http-equiv="refresh" content="5;" URL="./test.html">
Комментарии:
1.
<meta http-equiv="refresh" content="5;" URL="./test.html">
у меня работает. Я склонен принять ваш ответ (и назначить награду), потому что этот вариант также обещает сработать, если у меня будет другой URL для перезагрузки (что нельзя использовать при получении ответа Эрика)2. «Обещает работать» означает «Не работает, но выглядит так, как будто это будет»?
3. @EricLaw: Работает, когда я пробую это локально, необходимо проверить его поведение при загрузке страницы через веб-сервер. Ваш ответ работает, но я не могу указать URL для перезагрузки. В моей реальной настройке я вызываю другой URL, который перенаправляет меня на страницу, где
<meta http-equiv=...
предоставляется.
Ответ №2:
Насколько я знаю, есть только способ mta или javascript.
Другим вариантом может быть использование
header("Location: url");
если вы можете использовать php, это не совсем обычное обновление, но вы могли бы использовать для повторного перенаправления на ту же страницу
Как и в случае с мета-способом, вы пытались ввести полный URL? (IE, arrg )
Комментарии:
1. AFAIK, недостатком
header("Location: url");
является то, что вы не можете указать время ожидания…2. Я забыл, что
header( "refresh:5;url=url");
никогда не подтверждалось, но я слышал, что это реагирует так же, как ваша проблема с IE 8
Ответ №3:
Вообще говоря, органы по стандартизации неодобрительно относятся к использованию нестандартного МЕТА-ОБНОВЛЕНИЯ. Сказав это, вы пробовали использовать полный URL вместо относительного URL? Если вы пытаетесь перезагружать одну и ту же страницу снова и снова, вы пытались полностью опустить URL?
Ответ №4:
Используйте это, я подозреваю, что ваш URL настроен неправильно
<html>
<head>
<meta http-equiv="refresh" content="1">
</head>
<body>
</body>
</html>
Это всегда обновляется само по себе.
Надеюсь, это поможет 🙂
Ответ №5:
Javascript будет вашим другом в этом… в конечном итоге он работает намного лучше в большинстве браузеров. Кроме того, meta-refresh
это выходит из моды.
Следующий скрипт и onload
атрибут body будут непрерывно обновлять страницу каждые 5 секунд.
<html>
<head>
<script>
function timedRefresh(timeoutPeriod) {
setTimeout("location.reload(true);",timeoutPeriod);
}
</script>
<noscript>
<meta http-equiv="refresh" content="5" />
</noscript>
</head>
<body onload="javascript:timedRefresh(5000)">
<!-- Content -->
</body>
</html>
Комментарии:
1. @Isaac: Я написал в своем вопросе, что javascript не является опцией. -1.
2. Да, ну, я боюсь, что тогда вы застрянете.
Meta-refresh
устаревает, и его поведение неустойчиво в зависимости от браузера. Я бы посоветовал действительно попытаться заставить Javascript работать. В противном случае у вас нет никаких опций.3. @Crossdiver: для наших веб-страниц обязательным требованием является то, что они должны работать, когда JS отключен. Поэтому я должен предоставить решение, отличное от javascript.
4. @eckes — ОК, я просто добавил некоторый код, который используется на ESPN.com для обновления их устаревшего браузера. Этот код будет лучше всего работать в браузере JS, но имеет запасной вариант для устаревших браузеров. (-1) ( 1) = 0?
5. @Crossdiver: Мета-обновление не устарело. Это неверная информация. Единственное, что говорит W3, это то, что не рекомендуется автоматически обновлять страницы, потому что это может дезориентировать некоторых пользователей. w3.org/TR/WCAG10-CORE-TECHS/#auto-page-refresh