【问题标题】:How to refresh the page only one time after 5 sec in JavaScript?如何在 JavaScript 中 5 秒后仅刷新一次页面?
【发布时间】:2014-02-10 07:40:03
【问题描述】:

有谁知道如何在 JavaScript 中仅在 5 秒后刷新一次页面?

我有以下脚本在 5 秒后刷新页面:

setTimeout(function () {
    window.location.reload(1);
}, 5000);  // After 5 secs

但不知何故,这是每 5 秒刷新一次,而不是在第一个 5 秒后刷新一次。有谁知道如何解决这个问题?

【问题讨论】:

  • 确保每次重新加载时它都不会再次运行。
  • 你可以设置一个cookie来查看它是否已经运行。如果设置了 cookie,则不要创建超时。更好的是,在 5 秒后使用 AJAX 请求并重新加载页面上的数据。

标签: javascript


【解决方案1】:

我认为更好的解决方案是检查document.referer并与document.location进行比较

if (document.referrer !== document.location.href) {
    setTimeout(function() {
        document.location.reload()
  }, 5000);
}

你可以在 jsfiddle 中试试这个:https://jsfiddle.net/ga0Lrurj/

【讨论】:

    【解决方案2】:

    这是迄今为止最简单、最轻便的解决方案:

    setTimeout(function () {
        if(window.location.hash != '#r') {
            window.location.hash = 'r';
            window.location.reload(1);
        }
    }, 5000);  // After 5 secs
    

    【讨论】:

      【解决方案3】:

      您需要一种方法来识别重新加载的页面。最简单的方法(imo)是控制这个服务器端。检查 get-variable 并包含 js-code 如果它不存在。

      另外,我看到有人建议使用 cookie。我不喜欢将 cookie 用于此类小事。

      你可以试试这样的:

      // Get all get-variables
      var queryDict = {}
      location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]})
      
      // Check if reloaded is set
      if (queryDict['reloaded'] == 'undefined') {
          // Check if url contains any get-variables
          if (Object.keys(queryDict).length == 0) {
              var redirect = document.URL + '?reloaded';
          }
          else {
              var redirect = document.URL + '&reloaded';
          }
      
          // The timeout
          setTimeout(function () {
              window.location = redirect;
          }, 5000);
      }
      

      【讨论】:

        【解决方案4】:

        您需要在执行插入或更新或任何其他任务后保留此脚本,然后它会在 5 秒后重新加载您的页面一次。它在上传图片时对我有用,我在上传文件后保留了这个脚本,而不是把它保存在 window.load 或documents.ready 函数中,它的工作就像一个魅力。这是我的脚本。希望这可以帮助您解决问题

        <script type="text/javascript">
        $(window).load(function () {
                 $('#<%=FileUpload1.ClientID%>').uploadify({
                'swf': 'fy/uploadify.swf',
                'cancelImg': 'fy/uploadify-cancel.png',
                'buttonText': 'Browse Files',
                'uploader': 'Gallery.ashx',
                'folder': 'uploads',
                'fileDesc': 'Image Files',
                'fileExt': '*.jpg;*.jpeg;*.gif;*.png',
        
                'multi':true,
                'auto': false,
        
                'formData':{'paid':<%= Request.QueryString["PhotoAlbumID"]  %>},
                'onUploadStart': function (file) {
                    $("#<%=FileUpload1.ClientID%>").uploadify("settings", 'Txt', $('#password').val());
        
                    $( document ).ready(function() {
        
        
                    });  setTimeout(function() { window.location=window.location;},3000);
        
                }  
                 });
        });
        
        
        
        </script>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-15
          • 2016-03-10
          • 1970-01-01
          • 2019-06-25
          • 2017-05-13
          相关资源
          最近更新 更多