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

时间:2015-02-10 15:47:47

标签: 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>

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

4 个答案:

答案 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);

}