5

我正在使用以下代码作为空引用脚本的一种形式,它运行良好,但它只是将它们直接重定向到目标 URL。

我将如何创建一个 5 秒的延迟,以便在重定向之前显示一些广告 5 秒?

4

3 回答 3

67

您可以发送带有超时刷新的 php 标头。http://php.net/manual/en/function.header.php

<?php 
  header( "refresh:5; url=wherever.php" ); 
?>
于 2013-02-19T10:59:41.460 回答
7

使用sleep()怎么样?

function method1(...) {

sleep(5);

... rest of the code

但是请注意,更建议使用Vahe Shadunts 的答案,它使用它header()来代替。

于 2013-02-19T10:48:16.827 回答
6

标题refresh完成了这项工作,但我想强调一些潜在的问题:

  • 它没有在 HTTP 标准中指定。维基百科说:

    专有和非标准:由 Netscape 引入并被大多数 Web 浏览器支持的标头扩展。

    但它已经存在将近 20 年了,我不知道有任何浏览器支持它(虽然找不到参考)

  • 某些浏览器不使用以 . 重定向的页面上的缓存refresh。它已在此处为 Internet Explorer 进行了演示:http: //blogs.msdn.com/b/ieinternals/archive/2010/05/13/meta-refresh-causes-additional-http-requests.aspx我可以复制它火狐。Chrome 没有这个问题。

替代方案:JavaScript

您可以在中间页面上添加一个 JavaScript,它会在 X 秒后打开一个新页面。在页面底部添加以下内容以在几秒钟http://www.example.com/target后重定向到:5

<script type="text/javascript">
    window.setTimeout(function() {
        window.location.href='http://www.example.com/target';
    }, 5000);
</script>

组合

refresh作为奖励,如果 JS 被禁用,您可以回退到标头,使用该meta指令http-equiv告诉浏览器就像发送了某个 HTTP 标头一样。因为它是 HTML 源代码的一部分,所以您可以将它包装在一个<noscript>元素中。将此添加到您的<head>附加到上面的 JavaScript 中:

<noscript>
    <meta http-equiv="refresh" content="5;url=http://www.example.com/target" />
</noscript>

现在,如果可用,页面将使用 JavaScript 重定向以获得最佳性能,refresh否则使用。

于 2015-10-08T07:22:20.510 回答