【问题标题】:Refresh a page using JavaScript or HTML [duplicate]使用 JavaScript 或 HTML 刷新页面 [重复]
【发布时间】:2011-07-14 18:28:22
【问题描述】:

如何使用 JavaScript 或 HTML 刷新页面?

【问题讨论】:

  • 谷歌的第一个整页你的问题会给你答案。
  • 这样的问题应该被关闭。应该鼓励用户先做这样一个简单的搜索,鼓励阅读..
  • @amosrivera - 以对这个问题的赞成票与反对票的比率来表示,大多数沉默的用户非常感谢能够在 Stackoverflow 上找到此类问题的答案
  • @stefan:谢天谢地,谷歌把我(和成千上万的其他人)带到了这里——寻找最佳答案。
  • 可悲的是,当您在谷歌上搜索“通过 js 自动刷新页面”时,这是出现的第一页,所以在这里不回答有点毫无意义:)

标签: javascript html page-refresh


【解决方案1】:

window.location.reload(); 在 JavaScript 中

<meta http-equiv="refresh" content="1"> 在 HTML 中(其中1 = 1 秒)。

【讨论】:

    【解决方案2】:

    用途:

    window.location.reload();
    

    【讨论】:

      【解决方案3】:
      window.location.reload()
      

      应该可以,但是有许多不同的选项,例如:

      window.location.href=window.location.href
      

      【讨论】:

      • "window.location.href=window.location.href" 似乎不再起作用了
      【解决方案4】:

      这里有535 ways to reload一个使用javascript的页面,很酷:

      这里是前 20 个:

      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)
      

      以及最后 10 个:

      self['location']['replace'](self.location['href'])
      location.reload()
      location['reload']()
      window.location.reload()
      window['location'].reload()
      window.location['reload']()
      window['location']['reload']()
      self.location.reload()
      self['location'].reload()
      self.location['reload']()
      self['location']['reload']()
      

      Original Article

      【讨论】:

      • 不,我没有全部测试
      • 如果您的地址栏包含#hashValue,则所有将window.location设置为变量(不执行函数)的人都不会刷新,它只会移动到页面上的该ID,如果它存在。
      • 该列表中的许多条目只是具有不同语法的相同事物,例如用于访问对象属性的[] vs . 语法。
      • 哇,看看网页源代码,重复列表重复了这么久,他只是使用javascript生成所有可能的排列,而不是写出自己的想法。
      • 但缺少window.history.go(0) ;)
      【解决方案5】:

      只需使用..

      location.reload(true/false);
      

      如果为 false,页面将从缓存重新加载,否则从服务器重新加载。

      【讨论】:

      • 默认值为false,用于从缓存中重新加载页面。
      • 这个答案成就了我的一天,或者更准确地说:我的夜晚...... location.reload() 和一些卡在先前状态的模态窗口有问题。 location.reload(true);是解决方案,因为默认值确实是错误的,如 Nabi K.A.Z.状态。非常感谢...
      • 现已弃用。请改用window.location.reload()
      • 注意:这将重新提交表单
      【解决方案6】:

      如果它需要控制缓存页面的更新,我有一个很好的方法来做到这一点。

      • 向页面添加一些javascript,在加载时总是将页面的版本号作为字符串(ajax)获取。例如:www.yoursite.com/page/about?getVer=1&__[date]
      • 如果用户访问过该页面一次,则将其与存储的版本号(存储在 cookie 或 localStorage 中)进行比较,否则直接存储。
      • 如果版本与本地版本不同,使用window.location.reload(true)刷新页面
      • 您将看到页面上所做的任何更改。

      此方法至少需要一个请求,即使不需要请求,因为它已经存在于本地浏览器缓存中。但是与完全不使用缓存相比,开销要少(以确保页面将显示正确的更新内容)。每个页面请求只需要几个字节,而不是每个页面的所有内容。

      重要提示:版本信息请求必须在您的服务器上实现,否则它将返回整个页面。

      www.yoursite.com/page/about?getVer=1&__[date] 返回的版本字符串示例: skg2pl-v8kqb

      为了给你一个代码示例,这里是我的库的一部分(我认为你不能使用它,但也许它会让你知道如何去做):

      o.gCheckDocVersion = function() // Because of the hard caching method, check document for changes with ajax 
      {
        var sUrl = o.getQuerylessUrl(window.location.href),
            sDocVer = o.gGetData( sUrl, false );
      
        o.ajaxRequest({ url:sUrl+'?getVer=1&'+o.uniqueId(), cache:0, dataType:'text' }, 
                      function(sVer)
                      {
                         if( typeof sVer == 'string' && sVer.length )
                         {
                           var bReload = (( typeof sDocVer == 'string' ) && sDocVer != sVer );
                           if( bReload || !sDocVer )
                            { 
                              o.gSetData( sUrl, sVer ); 
                              sDocVer = o.gGetData( sUrl, false );
                              if( bReload && ( typeof sDocVer != 'string' || sDocVer != sVer ))
                               { bReload = false; }
                            }
                           if( bReload )
                            {  // Hard refresh page contents
                              window.location.reload(true); }
                         }
                      }, false, false );
      };
      

      如果您使用与版本无关的资源,例如 javascript 或 css 文件,请添加版本号(通过 url 重写而不是查询来实现,因为它们大多不会被缓存)。例如:www.yoursite.com/ver-01/about.js

      对我来说,这种方法效果很好,也许它也可以帮助你。

      【讨论】:

        【解决方案7】:

        试试这个效果很好

        jQuery("body").load(window.location.href);
        

        【讨论】:

        • 为什么要投反对票?
        • 可能是因为 OP 要求使用 Javascript 方法,而您提供了 JQuery 方法
        • 除了超级低效,甚至不刷新页面...
        【解决方案8】:

        你也可以使用

        <input type="button" value = "Refresh" onclick="history.go(0)" />
        

        对我来说很好用。

        【讨论】:

        • 注意:这将重新提交表单
        猜你喜欢
        • 2012-05-23
        • 1970-01-01
        • 2016-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-08
        • 2012-03-11
        • 1970-01-01
        相关资源
        最近更新 更多