如果当前页面加载x秒,则重定向到另一个页面?

时间:2016-11-01 08:57:52

标签: javascript php

只是好奇这是否可能。我正在使用API​​,功能有时可能需要很长时间才能完成,甚至可能会超时,具体取决于它的感觉。有没有办法(使用PHP,Javascript等)能够在X秒后停止加载页面并重定向到另一个页面?

具体来说,我使用的是使用标准表单发布机制发布到API的表单。

1 个答案:

答案 0 :(得分:1)

根据延迟慢速页面响应的内容,浏览器可能在表单提交后的一段时间内不会拆除上一页。这意味着您有机会使用setTimeout进行重定向。

document.querySelector("selector-for-the-form").addEventListener("submit", function() {
    setTimeout(function() {
        location.href = "/path/to/redirect/to";
    }, 3000); // 3000 = three seconds
}, false);

在我的默认设置中发布到这个简单的PHP页面时,这对我在Chrome,Firefox和IE上有用,这会做五秒钟的忙等待:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Delayed</title>
<style>
body {
    font-family: sans-serif;
}
</style>
</head>
<body>
<?php
$end = time() + 5;
while (time() < $end) {
    // wait
}
?>
<p>Done: <?php echo $_POST["foo"]?></p>
</body>
</html>

但是,这又取决于API页面是否需要几秒钟才能启动向浏览器发送数据。例如,如果它没有缓存,并且立即开始发送响应但是需要很长时间才能完成发送响应,浏览器可能会拆除页面并开始构建新页面。