Как автоматически обновить страницу с помощью ajax (и предотвратить реальное обновление браузера)? - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь добавить небольшой автообновляющий javascript на страницу, на которой уже есть jQuery.

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

Мне нужно запустить скрипт в консоли , иначе страница обновится только один раз.

Вот что я пытаюсь:

var x = function(){
  // reload the page
  jQuery('html').load(window.location.href);

  // recurse every 5 seconds
  setTimeout(x, 5000);
};

// init
x();

Это генерирует ошибку appendChild.Я предполагаю, что я немного ошибаюсь.

Ответы [ 4 ]

1 голос
/ 21 марта 2012

Несмотря на отсутствие уверенности в том, что это возможно, это решение, хотя и не идеальное, безусловно, работает достаточно хорошо

(function x(){
  jQuery('html').html('<iframe width="100%" height="' + $(window).height() + 'px" src="' + window.location.href + '"></iframe>');

  setTimeout(x, 5000);
})();
0 голосов
/ 21 марта 2012

Попробуйте:

function x(){
    setTimeout(function(){ location.reload(); }, 5000);
}();

Редактировать: Вы сделали свой вопрос немного более понятным.Это должно сделать трюк:

setInterval(function(){ location.reload(); }, 5000);
0 голосов
/ 21 марта 2012

Возможно, вы хотите заменить тело содержимым страницы.Он не перезагрузит всю страницу, поэтому ваш скрипт останется прямо там.Однако он может конфликтовать с существующими скриптами на странице.

Как это сделать:

var x = function () {
  $('body').load(window.location.pathname);

  setTimeout(x,5000);
}
x();

Справочник jQuery

edit:

и теперь более «синтетически не такой ужасный» подход: переписать весь документ.

var x = function () {
  $.get(window.location.pathname, function (data) { 
    document.open(); 
    document.write(data); 
    document.close(); } 
  );

  setTimeout(x,5000);
}
x();

Это работает и не перезагружает страницу под тегом body.

Но я думаю, что слишком много печатать и беспокоиться за инъекцию взломать: P

0 голосов
/ 21 марта 2012

Попробуйте использовать window.location.reload();, как показано ниже для сценария автоматического обновления,

<script>
    setTimeout(function () {
       window.location.reload();
    }, 5000);
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...