我可以使用javascript停止元刷新吗?

Rei*_*ica 7 javascript meta-tags

以下代码允许用户停止元刷新发生 - 并且它成功地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>
Run Code Online (Sandbox Code Playgroud)

编辑:这与此问题不同,因为该问题需要为不支持javascript的用户提供后备解决方案 - 对我来说情况并非如此(该问题的大部分答案都不适用于此问题).

Cla*_*o P 12

只是为了完整而不是我推荐的方式.你可以打电话:

window.stop();
Run Code Online (Sandbox Code Playgroud)

要停止加载窗口.Internet Explorer不支持此功能,您必须这样做:

document.execCommand("Stop");
Run Code Online (Sandbox Code Playgroud)


tva*_*son 5

我认为您将无法执行此操作,因为在加载页面时会读取标头,并且浏览器会安排刷新。我认为浏览器无法为您取消这种方式,因为它实际上是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>
Run Code Online (Sandbox Code Playgroud)


小智 1

您稍后无法通过 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>
Run Code Online (Sandbox Code Playgroud)