[javascript] 我如何使用jQuery刷新页面?



Answers

这应该适用于所有浏览器,即使没有jQuery:

location.reload();
Question

我如何使用jQuery刷新页面?




我发现

window.location.href = "";

要么

window.location.href = null;

也会刷新页面。

这使得重新加载删除任何散列的页面变得非常容易。 当我在iOS模拟器中使用AngularJS时,这非常好,所以我不必重新运行应用程序。




你可能想要使用

location.reload(forceGet)

forceGet是一个布尔和可选的。

默认值为false,从缓存中重新加载页面。

如果要强制浏览器从服务器获取页面以摆脱缓存,请将此参数设置为true。

要不就

location.reload()

如果你想快速轻松地进行缓存。




重新加载功能

reload: function() {
    location.reload();
},

重新加载点击事件

$("a").click(function(){
    location.reload();
})



这是一个使用jQuery异步重新加载页面的解决方案。 它避免了由window.location = window.location引起的闪烁。 此示例显示了一个连续重新加载的页面,如在仪表板中。 它经过了战斗测试,并在时代广场的一台信息显示电视上运行。

<!DOCTYPE html>
<html lang="en">
  <head>
    ...
    <meta http-equiv="refresh" content="300">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
    <script>
    function refresh() {
      $.ajax({
        url: "",
        dataType: "text",
        success: function(html) {
          $('#fu').replaceWith($.parseHTML(html));
          setTimeout(refresh,2000);
        }
      });
    }
    refresh();
    </script>
  </head>
  <body>
    <div id="fu">
      ...
    </div>
  </body>
</html>

笔记:

  • 即使使用cache: true ,直接使用$.ajax $.get('',function(data){$(document.body).html(data)})$.get('',function(data){$(document.body).html(data)})也会导致css / js文件被缓存 cache: true 。这就是我们使用parseHTML的原因
  • parseHTML将不会找到一个body标签,所以你的整个身体需要进入一个额外的div,我希望有一天知识的这个块可以帮助你,你可以猜测我们如何选择该div的id
  • 使用http-equiv="refresh" ,以防万一javascript /服务器打嗝出现问题,那么页面仍然会重新加载,而不会收到电话
  • 这种方法可能以某种方式泄漏内存, http-equiv刷新修复了这个问题



window.location.reload()将从服务器重新加载,并会再次加载所有数据,脚本,图像等。

所以,如果你只是想刷新HTML,那么window.location = document.URL将返回更快,流量更少。 但是如果URL中有散列(#),它将不会重新加载页面。




我猜想有很多方法可行:

  • window.location.reload();
  • history.go(0);
  • window.location.href=window.location.href;



如果当前页面是由POST请求加载的,则可能需要使用

window.location = window.location.pathname;

代替

window.location.reload();

因为如果在POST请求加载的页面上调用, window.location.reload()会提示确认。




Links