如何使用ajax自动刷新页面(并阻止实际的浏览器刷新)?

时间:2012-03-20 20:11:31

标签: javascript jquery automation refresh

我正在尝试将一个小的自动刷新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 个答案:

答案 0 :(得分:1)

尽管不相信这是可能的,但这个解决方案虽然并不完美,但肯定能够很好地运作

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

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

答案 1 :(得分:0)

尝试使用下面的window.location.reload();作为自动刷新脚本

<script>
    setTimeout(function () {
       window.location.reload();
    }, 5000);
</script>

答案 2 :(得分:0)

试试这个:

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

编辑:您的问题更清晰了。这应该可以解决问题:

setInterval(function(){ location.reload(); }, 5000);

答案 3 :(得分:0)

也许你想用页面内容替换正文。它不会重新加载整个页面,因此您的脚本将保留在那里。但是,它可能与页面上的现有脚本冲突。

怎么做:

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

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

jQuery Reference

编辑:

现在更加“合成不那么糟糕”的方法:重写整个文档。

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

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

这有效,不会在body标签下重新加载页面。

但我认为打字过多和担心注射黑客:P