如何使用JavaScript重新加载页面


871

如何使用JavaScript重新加载页面?

我需要一种适用于所有浏览器的方法。

Answers:


946

JavaScript 1.0

window.location.href = window.location.pathname + window.location.search + window.location.hash;
// creates a history entry

JavaScript 1.1

window.location.replace(window.location.pathname + window.location.search + window.location.hash);
// does not create a history entry

JavaScript 1.2

window.location.reload(false); 
// If we needed to pull the document from
//  the web-server again (such as where the document contents
//  change dynamically) we would pass the argument as 'true'.

80
'true'将强制页面从服务器重新加载。如果可用,“ false”将从缓存中重新加载。
barro32 2012年

3
是否.reload(true)添加到历史记录?如果是这样,如何避免重载?
johntrepreneur 2013年


1
这是最好的答案,应该放在首位。我对其他功能的问题是它们没有使用服务器中的内容刷新页面,而没有使用缓存,因此JavaScript 1.2解决方案对我来说是最好的也是唯一的解决方案。
Ryan Coolwebs '16

8
根据我的IDE和.reload(true)或.reload(false),我的IDE和github.com/Microsoft/TypeScript/issues/28898已弃用-现在应使用.reload()
danday74 '19

387
location.reload();

有关更多信息,请参见此MDN页面

如果您在之后刷新,onclick则需要在之后直接返回false

location.reload();
return false;

22
location.reload()和之间有什么区别window.location.reload()
猛禽2013年

53
@ShivanRaptor通常没有,在网络浏览器方面,location相同window.locationwindow是全局对象。
Lekensteyn

1
不要忘记return false;是否通过链接中的onclick调用它。
Rimian

2
我更喜欢使用window.location.reload();可读性,因为它location可能是局部变量-而您通常会避免使用name变量window
雪人

216

这里有535种使用JavaScript重新加载页面的方法,最简单的方法是location = location

这些是前50个:

location = location
location = location.href
location = window.location
location = self.location
location = window.location.href
location = self.location.href
location = location['href']
location = window['location']
location = window['location'].href
location = window['location']['href']
location = window.location['href']
location = self['location']
location = self['location'].href
location = self['location']['href']
location = self.location['href']
location.assign(location)
location.replace(location)
window.location.assign(location)
window.location.replace(location)
self.location.assign(location)
self.location.replace(location)
location['assign'](location)
location['replace'](location)
window.location['assign'](location)
window.location['replace'](location)
window['location'].assign(location)
window['location'].replace(location)
window['location']['assign'](location)
window['location']['replace'](location)
self.location['assign'](location)
self.location['replace'](location)
self['location'].assign(location)
self['location'].replace(location)
self['location']['assign'](location)
self['location']['replace'](location)
location.href = location
location.href = location.href
location.href = window.location
location.href = self.location
location.href = window.location.href
location.href = self.location.href
location.href = location['href']
location.href = window['location']
location.href = window['location'].href
location.href = window['location']['href']
location.href = window.location['href']
location.href = self['location']
location.href = self['location'].href
location.href = self['location']['href']
location.href = self.location['href']
...

84
那很有趣,但是现在我很困惑
Arun Prasad ES

14
它还强调了Javascript的特殊性:)
Jeremy Thille

51
我个人不喜欢这个答案,因为这只是显示了改变位置的各种实现方法。这些方式是在JavaScript中执行函数或访问属性的不同方式的排列。重新加载页面没有不同的方法。
约书亚·贝伦斯

40
当然,还有更多类似的东西,例如:window.window.window['window'].location = window['window'].window['window']['window']['window']['window']['window']['window']['location']
Renato

84

您可以使用执行此任务window.location.reload();。由于有很多方法可以执行此操作,但我认为这是使用JavaScript重新加载同一文档的适当方法。这是解释

window.location可以使用JavaScript 对象

  • 获取当前页面地址(URL)
  • 将浏览器重定向到另一个页面
  • 重新加载同一页面

window:JavaScript中的:表示浏览器中的打开窗口。

location:在JavaScript中保存有关当前URL的信息。

location对象是像的片段window对象,并通过调用window.location属性。

location 对象具有三种方法:

  1. assign():用于加载新文档
  2. reload():用于重新加载当前文档
  3. replace():用于用新文档替换当前文档

所以在这里我们需要使用reload(),因为它可以帮助我们重新加载同一文档。

所以像这样使用它window.location.reload();

jsfiddle在线演示

要要求您的浏览器直接从服务器而不是从缓存中检索页面,可以将true参数传递给location.reload()。此方法与所有主要浏览器兼容,包括IE,Chrome,Firefox,Safari,Opera。


2
啊哈! replace()原来是我要寻找的解决方案,因为我需要在查询字符串中稍作更改来重新加载页面。
Bernard Hymmen

从w3schools:“ assign()和replace()之间的区别在于replace()从文档历史记录中删除当前文档的URL,这意味着无法使用“后退”按钮导航回原始文件。”
pasaba por aqui

54

尝试:

window.location.reload(true);

设置为“ true”的参数将从服务器重新加载新副本。忽略它会从缓存中提供页面。

可以在MSDNMozilla文档中找到更多信息。


1
如果我想刷新外部网页www.xyz.com/abc怎么办?
DoIt 2015年

@Dev:您应该尝试使用“替换”,如稍后所述
Jean Paul AKA el_vete

@Orane:我特别喜欢这个答案的简单性和机智,因为为了满足op的查询提供了许多选择,也就是说,感谢您在这种情况下也提供了一个权威参考链接,以供将来在每个浏览器中参考有自己的JS引擎可以渲染...我认为这个问题很笼统,应该取决于您要做什么,因为其他网站参考:“ phpied.com/files/location-location/location- location.html “可能完全满足该问题的要求。但是,这对我有所帮助;)
Jean Paul AKA el_vete 17-3-30

这仍然是真的吗?这两个链接都没有提及任何要重新加载的参数。
鲁迪格·舒尔茨

49

我正在寻找有关通过POST请求检索的页面上的重新加载的一些信息,例如提交method="post"表单后。

要重新加载保存POST数据的页面,请使用:

window.location.reload();

要重新加载丢弃POST数据的页面(执行GET请求),请使用:

window.location.href = window.location.href;

希望这可以帮助其他人寻找相同的信息。


感谢您提供答案,其中包括重新加载随POST请求检索的文档的参考。
Christopher Schultz,

之间的良好区分GETPOST方法
哈桑贝格

这个答案太离谱了!
格雷格·兰德尔

1
window.location.href = window.location.href如果当前网址包含,则不会重新加载页面#。您可以删除不需要的哈希window.location.href = window.location.href.split('#')[0];
罗兰·斯塔克


36

这对我有用:

function refresh() {    
    setTimeout(function () {
        location.reload()
    }, 100);
}

http://jsfiddle.net/umerqureshi/znruyzop/


对我来说,这是可取的,因为它避免了服务器端的循环情况
ILMostro_7

1
我特别感谢包含超时功能,因为在刷新发生之前,我仍然想查看一条消息。荣誉!
马特·克莱梅恩斯

您可以将不同的值设置为setTimeout函数的第二个参数,但是它将不起作用,立即重新加载,如何解决?
O.Kuz,

1
@ O.Kuz不这么认为。可以说,如果将该值设置为5000ms,则5秒钟后会重新加载。参见jsfiddle.net/umerqureshi/znruyzop/446
umer,

1
我需要在代码中找到一个错误)非常感谢!
O.Kuz,

15

如果你把

window.location.reload(true);

在页面开始时,没有其他条件可以确定该代码为何运行,页面将加载,然后继续重新加载自身,直到关闭浏览器。


好吧,或者直到您打开另一个URL。这可能取决于浏览器处理连续页面(重新)加载的能力。
adamdunson

取决于正确放置的位置。我们在这里仅指的是锚标记不是执行诸如重新加载页面之类的动作的直观元素。建议:我们这样依赖于另一个UI对象作为目标来执行onclick事件。您可以通过将div定位为目标来在页面加载后在jQuery中执行此操作,例如,如果使用css装饰它。这取决于您要对其进行处理。在这种情况下是按钮而不是输入类型按钮。如果我们不打算将参数传递给后端应用程序,则似乎更合适。
Jean Paul AKA el_vete '16

IE:<button onclick =“ javascript:window.location.reload(true);”
Jean Paul AKA el_vete '16

11
location.href = location.href;

5
现代浏览器会忽略这一点,因为href不会更改,因此无需重新加载它。您只应将此作为旧浏览器的故障转移而无需重新加载:(location.reload?location.reload():location.href = location.href)
Radek Pech

@RadekPech哪些旧版浏览器没有location.reload()
Matthias

8

要使其变得简单,请使用location.reload()location.reload(true)如果要从服务器中获取内容,也可以使用。


8

使用按钮或将其放在“ a”(锚定)标签内:

<input type="button" value="RELOAD" onclick="location.reload();" />

尝试这些其他需求:

Location Objects has three methods --

assign() Used to load a new document
reload() Used to reloads the current document.
replace() Used to replace the current document with a new one

1
有趣的... <button> </ button>怎么样?原理一样吧?
Jean Paul AKA el_vete

1
它确实像一个魅力!请参阅下面的答案:)谢谢
Jean Paul AKA el_vete


4

20秒后自动重新加载页面。

<script>
    window.onload = function() {
        setTimeout(function () {
            location.reload()
        }, 20000);
     };
</script>

4

谢谢,这篇文章非常有帮助,不仅可以用建议的答案重新加载页面,还可以给我一个将jQuery UI图标放置到按钮上的想法:

<button style="display:block; vertical-align:middle; height:2.82em;"
        title="Cargar nuevamente el código fuente sin darle un [Enter] a la dirección en la barra de direcciones"
        class="ui-state-active ui-corner-all ui-priority-primary" 
        onclick="javascript:window.location.reload(true);">
    <span style="display:inline-block;" class="ui-icon ui-icon-refresh"></span>
    &nbsp;[<b>CARGAR NUEVAMENTE</b>]&nbsp;
</button>

编辑以显示当包含在项目中时的外观

2016-07-02

我很抱歉,这是一个个人项目,隐含使用jQuery UI,Themeroller,Icons框架以及jQuery选项卡之类的方法,但这是西班牙语;)


@Peter Mortensen:感谢您所做的编辑,该项目原型是为大学完成的,因此需要在随附的屏幕截图中使用西班牙语。.为此我表示歉意。.当然,需要具有一些与jQuery UI相关的核心依赖关系,使之融合在一起,如:---例如部件的ThemeRoller jqueryui.com/themeroller 和插件,如: plugins.jquery.com/qTip2datatables.net .. jQuery库本身,等等。但操作是根据上述某些响应完成的:onclick =“ javascript:window.location.reload(true);”>!
Jean Paul AKA el_vete 18/12/27

3

这应该工作:

window.location.href = window.location.href.split( '#' )[0];

要么

var x = window.location.href;
x = x.split( '#' );
window.location.href = x[0];

我之所以喜欢这样做,原因如下:

  • 删除#号后的部分,以确保在不会重新加载包含该内容的浏览器中重新加载该页面。
  • 如果您最近提交表单,它不会询问您是否要重新发布最近的内容。
  • 即使在最新的浏览器上也可以使用。在Lasted Firefox和Chrome上测试。

或者,您可以使用最新的官方方法完成此任务

window.location.reload()

3

使用此按钮刷新页面

演示

<input type="button" value="Reload Page" onClick="document.location.reload(true)">

2

reload()方法用于重新加载当前文档。

reload()方法的作用与浏览器中的reload按钮相同。

默认情况下,reload()方法从缓存中重新加载页面,但是您可以通过将forceGet参数设置为true来强制它从服务器重新加载页面:location.reload(true)。

        location.reload();

-3

您可以简单地使用

window.location=document.URL

其中document.URL获取当前页面的URL,window.location重新加载它。


2
现代浏览器会忽略这一点,因为href不会更改,因此无需重新加载它。您只应将此作为旧浏览器的故障转移而无需重新加载:(location.reload?location.reload():location = document.URL)
Radek Pech
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.