自动刷新页面

7

我将创建一个 JQuery 幻灯片展示,但需要页面每5分钟刷新一次以更改内容。

我知道可以通过一些 JavaScript 实现这一点,但这可以在客户端上进行更改以避免页面刷新。是否有一种方法可以使服务器超时并强制刷新页面?


3
目前两个答案都是正确的:A) 你无法从服务器强制执行此操作,B) 最简单的方法是使用 meta refresh 标头来实现。 - T.J. Crowder
2
你是否担心你的用户可能会入侵你网页的JavaScript代码并更改其行为? - Yogu
是的,我很担心这个 @Yogu,因为需要有广告部分,通过更改刷新时间可以避免这种情况发生。 - Somk
6
这是HTML和互联网的本质。你无法控制客户端。 - Kai Mattern
3
好的,但我很抱歉——这是客户机器,所以你不能强制任何事情。提到的“刷新”头部可以通过按下Esc键轻松避免。也许只有一小部分用户会更改JavaScript代码,因此赤字不会那么严重,对吗? - Yogu
1
不会那么糟糕。我只是想知道是否还有其他选择或解决方法。 - Somk
7个回答

24

除了使用JavaScript重新加载页面外,您还可以发送一个刷新头部:

header("Refresh: 300;url='http://thepage.com/example'");

浏览器将在300秒后重定向,不受JavaScript的影响。虽然可以在浏览器的配置中禁用它,但这通常不会被禁用。


18

Meta refresh 的工作原理非常简单:

<meta http-equiv="refresh" content="300">

300 的意思是每 300 秒或 5 分钟刷新一次。这样,您不使用 JavaScript,因此用户无法关闭它。


这正是Esailija的答案所做的。 - T.J. Crowder
4
我更喜欢一个真正的标题,它在源代码中看不到;P - Esailija
当然,PHP 也可以很好地工作,是的,您可能不想在源代码中排除它。 - user1522332

6

您无法从服务器端强制刷新页面。

在JavaScript中实现刷新的方法很简单:

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

尽管这可以在客户端被覆盖,但普通用户不会乱动你的脚本。


顺便说一句:你坚持重新加载页面有什么原因吗?


1

JavaScript 方法

var timer = null;

function auto_reload()
{
  window.location = 'http://domain.com/page.php';
}

<body onload="timer = setTimeout('auto_reload()',10000);">

1

META标签方法

The following refreshes the page every 30 seconds.

<head>
<meta http-equiv="refresh" content="30" />
</head>

1

使用PHP

我会使用一个可以在任何页面上调用而无需设置URL的PHP函数。

    // write the function
    function refresh( $time ){
        $current_url = $_SERVER[ 'REQUEST_URI' ];
        return header( "Refresh: " . $time . "; URL=$current_url" );
    }

    // call the function in the appropriate place
    refresh( 4 );   
    // this refreshes page after 4 seconds

-1

另一种重新加载的方法是使用window.location

    setTimeout(function(){
        window.location.href = "YOUR_PAGE_URL";
    }, 5000);

我看不出匿名函数的任何理由。 - Derek 朕會功夫

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接