只是好奇这是否可能。我正在使用一个 API,一个函数有时可能需要很长时间才能完成,甚至会超时,这取决于它的感觉。有没有一种方法(使用 PHP、Javascript 等)能够在 X 秒后停止页面加载并重定向到另一个页面?
具体来说,我使用的是使用标准表单发布机制发布到 API 的表单。
最佳答案
根据延迟缓慢页面响应的原因,浏览器可能在表单提交后的一段时间内不会拆除之前的页面。这意味着您有机会使用 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 页面是否需要几秒钟才能开始向浏览器发送数据。例如,如果它没有缓存,并立即开始发送响应,但需要很长时间才能完成发送响应,浏览器可能会拆除页面并开始构建新页面。
关于javascript - 如果当前页面需要 x 秒加载,重定向到另一个页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40356814/