3

我不相信这是可能的,但我想我会试一试。

作为我正在处理的项目的一部分,用户可以通过标准锚链接导航到不同站点上的页面。目标页面有时响应速度很慢,客户端希望设置“超时”,以便如果导航到目标页面花费的时间过长,则取消浏览器导航并显示消息。

是否可以使用 Javascript 取消已经在进行中的浏览器导航(即已经发出对目标站点的请求)?如果是这样,怎么做?

4

2 回答 2

2

我进行了一个简单的测试,是可以的。我使用 PHP 进行测试,但如果您使用不同的语言,这将不是问题。底线是 JavaScript 可以做到这一点,如cancel.php. 请看示例代码:

睡眠.php

<?php
sleep(30);
echo 'hello';
?>

取消.php

<h1>hello?</h2>
<script type="text/javascript">
location.href='sleep.php';
setTimeout(function(){
    location.href='#';
    alert('it is taking too long to respond, probably the site is down!');
}, 10000);
</script>

运行cancel.php后,会重定向到sleep.php。在 10 秒的加载时间后,它将停止加载 sleep.php 并得出该站点已关闭的结论。

于 2012-11-07T21:48:55.737 回答
-2

您可以重定向到其他地方,而当前的 DOM 仍然存在。

我运行了这个简单的测试,它重定向到 yahoo.com

$("#btn").click(function() {
    document.location.href = "http://www.google.com";
    document.location.href = "http://www.yahoo.com";
});​

我没有用计时器测试过,但似乎它应该可以工作,虽然我不能确定 100%。请发表你的发现!

于 2012-11-07T21:47:02.057 回答