【问题标题】:Refresh Page Automatically自动刷新页面
【发布时间】:2012-07-21 04:48:59
【问题描述】:

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

我知道我可以通过一些 Javascript 来做到这一点,但这可以在客户端进行更改以避免页面刷新。服务器有没有办法让页面超时并强制刷新?

【问题讨论】:

  • 当前的两个答案都是正确的:A)您不能从服务器强制执行此操作,并且 B)您可以使用 meta refresh 标头最轻松地做到这一点。
  • 所以您担心您的客户会侵入您页面的 javascript 并改变行为?
  • 这就是 html 和 web 的本质。您无法控制客户端。
  • 好的,但是我很抱歉 - 这是客户的机器,所以你不能强迫任何事情。通过按 Esc 可以轻松避免提到的 Refresh 标头。可能有一小部分用户会更改 javascript,因此赤字不会那么严重,不是吗?
  • 不,它不会那么糟糕。我只是想知道是否还有其他选择/解决方法

标签: php javascript jquery html


【解决方案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

【讨论】:

    【解决方案2】:

    元标记方法

    The following refreshes the page every 30 seconds.
    
    <head>
    <meta http-equiv="refresh" content="30" />
    </head>
    

    【讨论】:

      【解决方案3】:

      JavaScript 方法

      var timer = null;
      
      function auto_reload()
      {
        window.location = 'http://domain.com/page.php';
      }
      
      <body onload="timer = setTimeout('auto_reload()',10000);">
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 我看不出匿名函数的任何原因。
        【解决方案5】:

        除了 javascript 重新加载之外,您还可以发送刷新标头:

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

        浏览器将在 300 秒后重定向,无论是否使用 javascript。虽然可以在浏览器的配置中禁用,但通常不会禁用。

        【讨论】:

          【解决方案6】:

          您无法强制从服务器重新加载页面。

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

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

          虽然这可以在客户端被覆盖,但调节器用户不会乱用你的脚本。


          附带说明:您是否有任何理由如此坚持重新加载页面?

          【讨论】:

            【解决方案7】:

            元刷新将非常简单:

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

            300 表示每 300 秒或 5 分钟刷新一次。这样你就不用JavaScript,所以用户无法关闭它。

            【讨论】:

            • 这正是 Esailija 的回答所做的。
            • 我更喜欢真正的标题,它在源代码中看不到;P
            • 当然 PHP 也可以很好地工作,是的,您可能不想不将它包含在源代码中。
            猜你喜欢
            • 2013-03-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-06
            • 2013-12-14
            • 2011-12-29
            • 2016-03-26
            • 1970-01-01
            相关资源
            最近更新 更多