以下代码允许用户停止元刷新的发生 - 并且它成功地从页面中删除了meta refresh
,但浏览器仍然刷新了页面。知道如何让它发挥作用吗?
<!doctype html>
<html>
<head>
<title>Test</title>
<meta charset="UTF-8" />
<meta http-equiv="refresh" content="5" id="refresh" />
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript">
$(function(){
$("a").click(function(e){
e.preventDefault();
$("#refresh").remove();
});
});
</script>
</head>
<body>
Reloaded at <span id="time"></span>
<script>
document.getElementById("time").innerHTML = Date();
</script>
<a href="#">Stop refresh</a>
</body>
</html>
编辑:这与this question不同,因为该问题需要为不支持javascript的用户提供后备解决方案 - 对我来说情况并非如此(该问题的大多数答案都不适用于此问题)。
答案 0 :(得分:12)
只是为了完整而不是我推荐的方式。你可以打电话:
window.stop();
停止加载窗口。 Internet Explorer不支持此功能,您必须这样做:
document.execCommand("Stop");
答案 1 :(得分:4)
我认为你无法做到这一点,因为在加载页面时会读取标题,浏览器会安排刷新。我认为浏览器没有办法取消它,因为它实际上是一个HTTP头,而不是文档的一部分。最好为body元素添加一个onload处理程序,使用计时器来计划刷新,然后让你的click处理程序取消计时器。
<script type="text/javascript">
$(function(){
var timer;
$('body').on('load', function() {
timer = setTimeout(refresh, 5000);
});
$("a").click(function(e){
e.preventDefault();
if (timer) {
clearTimeout(timer);
timer = null;
}
});
function refresh() {
timer = null;
document.location.reload(true);
}
});
</script>
答案 2 :(得分:2)
由于加载页面时重新加载为triggert,因此无法通过javascript删除标题。但推迟5秒。
相反,您可以使用javascript而不是元标记来改变思维方式并重新加载页面:
<!doctype html>
<html>
<head>
<title>Test</title>
<meta charset="UTF-8" />
<script src="//code.jquery.com/jquery-1.11.2.min.js"></script>
<script type="text/javascript">
var timer = setTimeout(function() {
window.location = window.location;
}, 5000);
$(function(){
$("a").click(function(e){
e.preventDefault();
clearTimeout(timer);
});
});
</script>
</head>
<body>
Reloaded at <span id="time"></span>
<script>
document.getElementById("time").innerHTML = Date();
</script>
<a href="#">Stop refresh</a>
</body>
</html>
答案 3 :(得分:2)
这对我很有用! (试过镀铬)
<button onclick="pauseshow()"><img id="myImg" src="images/pause.jpg" width="45" height="45" style="position:absolute; top:10px; left:1200px;" ></button>
function pauseshow()
{
window.stop();
// Below did not work -->
// var mr = document.getElementById("mymetatag");
// mr.parentNode.removeChild(mr);
}