2010-11-21 2 views
1

В прошлом, когда я освещал события, я использовал мета-обновление с 5-минутным таймером, чтобы обновить страницу, чтобы у людей были последние обновления.Альтернативы использованию мета-refesh для обновления страницы

Понимая, что это не может быть идеальным способом сделать это (не всегда работает в IE, прерывает поток человека, перезапускает вещи для людей с программами для чтения с экрана и т. Д.) Мне интересно, есть ли другой способ чтобы справиться с этой ситуацией.

Можно ли что-то вроде ajax проверить каждые несколько минут, если html-файл на сервере более новый и распечатать сообщение «Обновить информацию, нажмите здесь, чтобы обновить»?

Если это безумие, как насчет javascript, который просто отсчет с 5 минут и просто предлагает обновление.

Если кто-нибудь может указать мне на учебники или фрагменты кода, я был бы признателен. Я просто играю программиста по телевизору. :-)

+1

Вы вручную обновить HTML-файл на сервере? – BGerrissen

+0

html-страницы в большинстве случаев недолговечны. Что-то вроде этого действительно необходимо, чтобы убедиться, что люди смотрят последнюю версию? –

ответ

0
setInterval(function() { 
    if (confirm("Its Been 5 Minutes. Would you like to refresh")) { 
    window.location.reload(true); 
    //Or instead of refreshing the page you could make an ajax call and determing if a newer page exists. IF one does then reload. 

    } 
}, 300000); 
+0

Извините за поздний ответ. Спасибо и счастливые праздники. – Ian

1

На самом деле, ваша мысль о приуроченном тесте Ajax - отличная идея. Я не уверен, что это именно то, что использует StackOverflow, но он периодически проверяет, были ли опубликованы другие ответы и показывается пользователю с интервалом, если есть обновления.

Я думаю, что это идеально подходит по этим причинам:

  • Это ненавязчивое - читатель может легко игнорировать обновление, если они не заботятся
  • Он не будет тратить пропускной - не перезаряжать, если пользователь выбирает
  • Это информативный - пользователь знает, что есть обновление и может действовать по нему.

Мое мнение о том, как - сценарий ajax отправляет последний идентификатор сообщения скрипту, который проверяет наличие новых скриптов. Этот скрипт может запросить вашу базу данных, чтобы узнать, есть ли какие-либо новые сообщения и сколько их есть. Он может вернуть это число. Если есть новые сообщения, покажите некоторое (не модальное) сообщение, включая количество обновлений, и дайте возможность пользователю решить, что с ним делать.

+0

Мне нравится идея не потерять пропускную способность, если нет никаких изменений. Единственная проблема с концепцией post id заключается в том, что это самодостаточно либо на статическом файле, либо на базе базы данных. например example.com/stackoverflowawards/2010/winners. Эта страница обновляется новым контентом в той же записи файла/db, но не является новым сообщением каждого обновления. – Ian

+0

Вы всегда можете отметить сообщение классом или другими метаданными, которые являются меткой времени. Затем сравните временную метку с последней обновленной меткой времени в записи файла/db. Такая же концепция, различные способы определения, было ли обновление. –

0

Вы можете использовать функцию setInterval в javascript.

вот пример

setInterval("refresh function", milliseconds, lang); 

Вы будете использовать его, передав имя функции, которая на самом деле обновить страницу для первых паров и количество миллисекунд обновления для второй пар (300000 в течение 5 минут) , Третий параметр lang не является обязательным.

+0

..Note SetTimeout будет работать только один раз. SetInterval будет работать непрерывно. –

+0

@John Hartsock: oooops! Спасибо, что вспомнил. Вы абсолютно правы. Я собираюсь изменить свой вопрос. Благодаря! – Lorenzo

0

Если пользователь будет взаимодействовать с результатами и щелкать на вещи, было бы немного грубо просто обновить страницу на них. Я думаю, что делать что-то вроде уведомления о том, что страница была обновлена, была бы идеальной.

Я бы использовал jQuery и сделал ajax-вызов файла на сервере или что-то, что вернет обновленные данные. Если это новее, чем бросить сообщение Growl

Gritter - jQuery Growl System Demo of what a Growl is using Gritter

рычанием сообщение подошел бы, возможно, с тем, что было изменено, новые оценки, а затем вариант в этом сообщении, чтобы обновить и просмотреть новые результаты.

jQuery Ajax information

Смежные вопросы