如何使用JavaScript刷新页面?
当前回答
下面是一个使用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>
笔记:
直接像$.get(“”,function(data){$(document.body).html(data)})那样使用$.ajax会导致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中有散列(#),则不会重新加载页面。
具有不同缓存相关行为的三种方法:
location.reload(true)在实现location.reload()的forcedReload参数的浏览器中,通过获取页面及其所有资源(脚本、样式表、图像等)的新副本来重新加载。不会从缓存中提供任何资源-从服务器获取新副本,而无需发送任何副本(如果修改后或没有与请求中的标头匹配)。相当于用户在可能的情况下在浏览器中进行“硬重新加载”。请注意,Firefox(请参阅MDN)和Internet Explorer(请参阅MSDN)支持将true传递到location.reload(),但不受普遍支持,也不是W3 HTML 5规范、W3 HTML 5.1草案规范和WHATWG HTML生活标准的一部分。在不支持的浏览器中,如Google Chrome,location.reload(true)的行为与location.reload()相同。location.reload()或location.reload(false)重新加载页面,获取页面HTML本身的新的、未缓存的副本,并对浏览器缓存的任何资源(如脚本)执行RFC 7234重新验证请求,即使它们是新的。RFC 7234允许浏览器在不重新验证的情况下为它们提供服务。据我所知,在执行location.reload()调用时,浏览器应该如何使用其缓存并没有具体说明或记录;我通过实验确定了上述行为。这相当于用户只需按下浏览器中的“刷新”按钮。location=位置(或无限多其他可能涉及指定位置或其财产的技术)仅当页面的URL不包含fragid/hashbang时才有效!重新加载页面,而无需重新蚀刻或重新验证缓存中的任何新资源。如果页面的HTML本身是新的,这将重新加载页面,而不执行任何HTTP请求。这相当于(从缓存角度)用户在新选项卡中打开页面。但是,如果页面的URL包含哈希,则这将无效。同样,据我所知,这里的缓存行为没有具体说明;我通过测试确定了这一点。
总之,您希望使用:
location=缓存的最大使用位置,只要页面的URL中没有哈希,在这种情况下,这将不起作用location.reload(true)在不重新验证的情况下获取所有资源的新副本(尽管它不受普遍支持,并且在某些浏览器(如Chrome)中的行为与location.reloadlocation.reload()忠实地再现用户单击“刷新”按钮的效果。
你们可能需要使用
location.reload(forceGet)
forceGet是一个布尔值,也是可选的。
默认值为false,这将重新加载缓存的页面。
有很多方法可以重新加载当前页面,但使用这些方法,您可以看到页面更新,但不会有很少的缓存值,因此要克服这个问题,或者如果您希望发出硬请求,请使用以下代码。
location.reload(true);
//Here, it will make a hard request or reload the current page and clear the cache as well.
location.reload(false); OR location.reload();
//It can be reload the page with cache
在按钮标记中使用onclick=“return location.reload();”。
<button id="refersh-page" name="refersh-page" type="button" onclick="return location.reload();">Refesh Page</button>
推荐文章
- 检测用户何时离开网页的最佳方法?
- 当“模糊”事件发生时,我如何才能找到哪个元素的焦点去了*到*?
- React不会加载本地图像
- 如何将Blob转换为JavaScript文件
- 在另一个js文件中调用JavaScript函数
- 如何在svg元素中使用z索引?
- 如何求一个数的长度?
- 跨源请求头(CORS)与PHP头
- 如何用Express/Node以编程方式发送404响应?
- parseInt(null, 24) === 23…等等,什么?
- 使用jQuery获取第二个孩子
- JavaScript变量声明在循环外还是循环内?
- 元素在“for(…in…)”循环中排序
- 在哪里放置JavaScript在HTML文件?
- 什么时候.then(success, fail)被认为是承诺的反模式?