Перезагрузите виджет JavaScript на основе временного интервала - PullRequest
0 голосов
/ 25 июля 2011

http://jsfiddle.net/4B2Bc/1/ <- ссылка на виджет </p>

У меня есть этот виджет JavaScript, который я хочу перезагружать каждые 60 секунд, чтобы содержимое на нем обновлялось.Однако проблема заключается в том, что всякий раз, когда я использую установленное время ожидания или что-то еще внутри виджета или вне виджета, весь экран становится черным при обновлении виджета.

В окне отладки я вижу, что файл json дляновое содержимое извлекается с правильным содержимым, но оно не применяется.

Таким образом, единственный другой метод, который мне оставался, - это продолжать писать тег <script type="text/javascript" src="http://domainsoutlook.net/wjs/12_61532/" charset="utf-8"></script>, который перезагружает весь js и обновляет виджет, но проблемаэто происходит быстро и сразу, а не периодически.

Любые решения, ребята ... Я готов использовать jquery в виджете, если это поможет.

Ответы [ 2 ]

1 голос
/ 25 июля 2011

Ваш скрипт стирает страницу, потому что вы используете document.write:

Запись в документ, который уже загружен без вызова document.open(), автоматически выполнит document.open call.

И document.open:

Если документ существует в целевом объекте, этот метод очищает его.

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

Не используйте document.write для выполненияваши обновления, просто используйте немного AJAX для перезагрузки некоторых новых данных с вашего сервера, а затем замените только те части, которые вам нужно заменить, используя те методы манипулирования DOM или jQuery, которые работают лучше всего.

Как только вы это заработаете,используйте setTimeout или setInterval для организации вызовов на сервер для получения свежих данных.

0 голосов
/ 25 июля 2011

с помощью jquery вы можете установить интервал, который похож на таймер.

$(function() {
    setInterval( "refreshWidget()", timeinmilliseconds );
});
...