提问人:luca 提问时间:3/23/2011 最后编辑:Mateen Ulhaqluca 更新时间:5/25/2023 访问量:3110842
如何使用 JavaScript 刷新页面?
How do I refresh a page using JavaScript?
答:
这适用于所有浏览器:
location.reload();
评论
例如,每当单击元素时重新加载:id="something"
$('#something').click(function() {
location.reload();
});
该函数采用一个可选参数,该参数可以设置为强制从服务器而不是缓存重新加载。该参数默认为 ,因此默认情况下,页面可能会从浏览器的缓存中重新加载。reload()
true
false
评论
window.location.href=window.location.href;
location.href=location.href;
window.location.reload(true);
将硬刷新,否则默认为 false
window.location.reload()
location.reload(true)
我想有很多方法会起作用:
window.location.reload();
history.go(0);
window.location.href=window.location.href;
评论
window.location.href=window.location.href;
example.com/something#blah
location.reload(
)
方法一样行事。location.reload()
history.go(0)
你被宠坏了;以下任何一项工作:
window.location.href = window.location.href;
window.location.reload();
history.go(0);
如果您使用的是 jQuery,并且想要异步刷新页面的内容,则可以执行以下操作:
$.ajax({
url: "",
context: document.body,
success: function(s,x){
$(this).html(s);
}
});
我在这里使用的方法是 Ajax jQuery。我在 Chrome 13 上测试了它。然后,我将代码放入将触发重新加载的处理程序中。URL 是 ,表示此页面。""
请注意,这可能不是提问者所说的“刷新”的意思。通常,在通常的用法中,该术语是指以浏览器在用户单击浏览器用户界面中提供的“刷新/重新加载”按钮时的方式重新加载页面。然而,这并不是“刷新”的唯一可能含义,在特定情况下可能是首选。
此代码的作用是将新的和更新的内容获取到页面。它通过对新内容发出异步 HTTP 请求,然后用新的异步加载内容替换页面的当前内容来实现此目的。它的结果是刷新页面的内容,即使它的工作方式略有不同。
您必须选择您真正想要的,以及最适合您的特定用例的。
评论
$.ajax
的参数,并期望它以某种方式执行某种魔术。它所做的只是设置回调函数的 this
值。Ajax 到 URL 将命中您当前所在的 URL,从而通常会加载完整的 HTML(包括 和 ),并且此答案中的任何内容都不会过滤掉您不想要的内容。context
""
<html>
<head>
<body>
如果当前页面是由 POST 请求加载的,则可能需要使用
window.location = window.location.pathname;
而不是
window.location.reload();
因为如果在由 POST 请求加载的页面上调用,将提示确认。window.location.reload()
评论
window.location = window.location
有多种无限的方法可以使用 JavaScript 刷新页面:
location.reload()
history.go(0)
location.href = location.href
location.href = location.pathname
location.replace(location.pathname)
location.reload(false)
如果我们需要从中提取文档 再次的 Web 服务器(例如文档内容所在的位置 动态更改),我们将参数作为 .
true
您可以继续保持列表的创意:
window.location = window.location
window.self.window.self.window.window.location = window.location
- ...等534种方式
var methods = [
"location.reload()",
"history.go(0)",
"location.href = location.href",
"location.href = location.pathname",
"location.replace(location.pathname)",
"location.reload(false)"
];
var $body = $("body");
for (var i = 0; i < methods.length; ++i) {
(function(cMethod) {
$body.append($("<button>", {
text: cMethod
}).on("click", function() {
eval(cMethod); // don't blame me for using eval
}));
})(methods[i]);
}
button {
background: #2ecc71;
border: 0;
color: white;
font-weight: bold;
font-family: "Monaco", monospace;
padding: 10px;
border-radius: 4px;
cursor: pointer;
transition: background-color 0.5s ease;
margin: 2px;
}
button:hover {
background: #27ae60;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
评论
(reload()/(false))
reload()
false
location.href = location.href
是我平时用的,但谢谢其他人。非常有用!+1
jQuery 函数还可以执行页面刷新:Load
$('body').load('views/file.html', function () {
$(this).fadeIn(5000);
});
评论
您可能希望使用
location.reload(forceGet)
forceGet
是一个布尔值和可选值。
默认值为 false,这将从缓存中重新加载页面。
如果要强制浏览器从服务器获取页面以摆脱缓存,请将此参数设置为 true。
或者只是
location.reload()
如果您想快速轻松地进行缓存。
window.location.reload()
将从服务器重新加载,并再次加载您的所有数据、脚本、图像等。
因此,如果您只想刷新 HTML,则返回速度会更快,流量更少。但是,如果 URL 中有哈希 (#),则不会重新加载页面。window.location = document.URL
评论
location.reload()
window.location = document.URL
由于这个问题是通用的,让我们尝试总结一下答案的可能解决方案:
简单的纯 JavaScript 解决方案:
最简单的方法是以适当的方式放置单行解决方案:
location.reload();
许多人在这里缺少的是,因为他们希望得到一些“分数”,因为 reload() 函数本身提供了一个布尔值作为参数(详细信息:https://developer.mozilla.org/en-US/docs/Web/API/Location/reload)。
Location.reload() 方法从当前 网址。它的可选唯一参数是一个布尔值,当它 true,则使页面始终从服务器重新加载。如果是 false 或未指定,浏览器可能会从其 缓存。
这意味着有两种方法:
解决方案 1:强制从服务器重新加载当前页面
location.reload(true);
解决方案2:从缓存或服务器重新加载(基于浏览器和您的配置)
location.reload(false);
location.reload();
如果你想将它与jQuery结合起来,监听一个事件,我建议使用“.on()”方法而不是“.click”或其他事件包装器,例如,更合适的解决方案是:
$('#reloadIt').on('eventXyZ', function() {
location.reload(true);
});
具有不同缓存相关行为的三种方法:
location.reload(true)
在实现 参数的浏览器中,通过获取页面及其所有资源(脚本、样式表、图像等)的新副本来重新加载。不会从缓存中提供任何资源 - 从服务器获取新副本,而无需在请求中发送任何 OR 标头。
forcedReload
location.reload()
if-modified-since
if-none-match
相当于用户在可能的情况下在浏览器中执行“硬重新加载”。
请注意,在 Firefox(参见 MDN)和 Internet Explorer(参见 MSDN)中支持传递 to,但并非普遍支持,并且不是 W3 HTML 5 规范、W3 HTML 5.1 规范草案或 WHATWG HTML Living Standard 的一部分。
true
location.reload()
在不支持的浏览器(如 Google Chrome)中,其行为与 相同。
location.reload(true)
location.reload()
location.reload(
) 或location.reload(false)
重新加载页面,获取页面 HTML 本身的全新非缓存副本,并对浏览器缓存的任何资源(如脚本)执行 RFC 7234 重新验证请求,即使它们是新的,RFC 7234 允许浏览器在不重新验证的情况下提供它们。
据我所知,浏览器在执行调用时应如何利用其缓存的确切方式没有指定或记录;我通过实验确定了上述行为。
location.reload()
这相当于用户只需按下浏览器中的“刷新”按钮即可。
location
= location
(或涉及分配给其属性的无限其他可能的技术)location
仅当页面的 URL 不包含 fragid/hashbang 时才有效!
重新加载页面,而不从缓存中重新提取或重新验证任何新资源。如果页面的 HTML 本身是最新的,这将重新加载页面,而无需执行任何 HTTP 请求。
这等效于用户(从缓存的角度来看)在新选项卡中打开页面。
但是,如果页面的 URL 包含哈希值,则不会产生任何影响。
同样,据我所知,这里的缓存行为是未指定的;我通过测试确定了它。
因此,总而言之,您希望使用:
location = location
为了最大限度地利用缓存,只要页面的 URL 中没有哈希值,在这种情况下,这将不起作用location.reload(true)
获取所有资源的新副本,而无需重新验证(尽管它不是普遍支持的,并且与某些浏览器(如 Chrome)中的行为没有什么不同)location.reload()
location.reload()
忠实地再现用户点击“刷新”按钮的效果。
评论
location = location
下面是一个使用 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>
笔记:
- 直接使用 like 会导致 css/js 文件被缓存破坏,即使你使用 ,这就是我们使用
$.ajax
$.get('',function(data){$(document.body).html(data)})
cache: true
parseHTML
parseHTML
不会找到body
标签,所以你的整个身体需要进入一个额外的 div,我希望这些知识有一天能帮助你,你可以猜到我们是如何选择 id 的div
- 使用以防万一 javascript/server 打嗝出现问题,那么页面仍然会重新加载,而不会接到电话
http-equiv="refresh"
- 这种方法可能会以某种方式泄漏内存,刷新可以修复
http-equiv
我发现
window.location.href = "";
或
window.location.href = null;
还会刷新页面。
这使得重新加载页面删除任何哈希值变得非常容易。 当我在 iOS 模拟器中使用 AngularJS 时,这非常好,这样我就不必重新运行该应用程序。
您可以使用 JavaScript 方法。
此方法接受布尔参数。 或。如果参数为 ;页面始终从服务器重新加载。如果是 ;这是默认值,或者使用空参数浏览器从其缓存中重新加载页面。location.reload()
true
false
true
false
带参数true
<button type="button" onclick="location.reload(true);">Reload page</button>
使用 / 参数default
false
<button type="button" onclick="location.reload();">Reload page</button>
使用 jquery
<button id="Reloadpage">Reload page</button>
<script type="text/javascript">
$('#Reloadpage').click(function() {
location.reload();
});
</script>
如果你正在使用 jQuery 并想要刷新,那么请尝试在 javascript 函数中添加你的 jQuery:
我想在单击时从页面中隐藏 iframe哦,对我来说它有效,但我无法单击允许我查看的项目,除非我手动刷新浏览器......不理想。h3
iframe
我尝试了以下方法:
var hide = () => {
$("#frame").hide();//jQuery
location.reload(true);//javascript
};
将普通的 Jane javascript 与 jQuery 混合应该可以工作。
// code where hide (where location.reload was used)function was integrated, below
iFrameInsert = () => {
var file = `Fe1FVoW0Nt4`;
$("#frame").html(`<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/${file}\" frameborder=\"0\" allow=\"autoplay; encrypted-media\" allowfullscreen></iframe><h3>Close Player</h3>`);
$("h3").enter code hereclick(hide);
}
// View Player
$("#id-to-be-clicked").click(iFrameInsert);
它在 JavaScript 中最短。
window.location = '';
可能最短(12 个字符) - 使用历史记录
history.go()
您可以通过两种方式编写它。第1种是重新加载页面的标准方法,也称为简单刷新
location.reload(); //simple refresh
另一种称为硬刷新。在这里,您传递布尔表达式并将其设置为 true。这将重新加载页面,销毁较旧的缓存并从头开始显示内容。
location.reload(true);//hard refresh
您可以简单地使用 .location.reload()
document.querySelector("button").addEventListener("mousedown", function () {
location.reload(); // reloads the page
}, false);
* {
margin: 0px;
padding: 0px;
}
button {
background-color: #90ffc9;
border: 1px solid #000000;
border-radius: 4px;
outline: none;
padding: 1%;
top: 50%;
left: 50%;
position: absolute;
transform: translate(-50%, -50%);
transition: background-color 350ms;
}
button:hover {
background-color: #80af99;
cursor: pointer;
}
<button>
Reload
</button>
上一个:jQuery是否有“存在”功能?
下一个:使用 jQuery 滚动到元素
评论