我正在使用以下代码作为空引用脚本的一种形式,它运行良好,但它只是将它们直接重定向到目标 URL。
我将如何创建一个 5 秒的延迟,以便在重定向之前显示一些广告 5 秒?
您可以发送带有超时刷新的 php 标头。http://php.net/manual/en/function.header.php
<?php
header( "refresh:5; url=wherever.php" );
?>
使用sleep()怎么样?
function method1(...) {
sleep(5);
... rest of the code
header()
来代替。标题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,它会在 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
否则使用。