【问题标题】:Reload page without disrupting currently running Javascript在不中断当前运行的 Javascript 的情况下重新加载页面
【发布时间】:2015-04-12 01:08:29
【问题描述】:

有什么方法可以在不重置页面上当前运行的 Javascript 代码的情况下重新加载页面(例如,通过 Chrome 开发控制台运行)?

我的情况是我有一个页面需要自动重新加载和运行代码。但是,每当我使用 window.location.reload() 刷新页面时,它都会停止我当前在页面上运行的任何 Javascript。

有什么方法可以让我保持刷新页面但继续运行相同的代码?

【问题讨论】:

  • 可以加框或者使用ajax更新页面而不需要重新加载
  • 无法刷新页面,但可以使用ajax从服务器加载新内容并更新页面。为什么需要在不停止 JavaScript 的情况下重新加载页面?
  • 最好使用AJAX;您可以查看:aspsnippets.com/Articles/…
  • 您也许还可以使用较新的 SharedWorker() 线程。
  • 感谢dandavis,使用ajax更新页面效果很好。

标签: javascript reload


【解决方案1】:

感谢 dandavis 的回答。

通过使用 ajax,我能够选择包含页面的 div 并有选择地重新加载它。实际上,这意味着页面内容已刷新。

代码如下所示:

$('#mydiv').load(document.URL +  ' #mydiv');

示例(其中中间是 div 的 ID):

$('#middle').load(document.URL +  ' #middle');

【讨论】:

  • 注意:如果您跨域运行,请确保启用 CORS
【解决方案2】:

如果你能动态更新你的页面会更好...... 但是如果不可能......

您可以将需要刷新的整个页面托管在框架集中,并在框架页面内的框架集之外执行重要的 JS。 Example

【讨论】:

    【解决方案3】:

    如果没有 AJAX,我可能会决定每 30 秒刷新一次整个页面,但是使用 AJAX,我可以只发出一个轻量级的请求来获取我需要的少量信息。

    使用 AJAX 提交表单并不总是最好的选择。除了没有真正让您比正常发布表单具有明显优势之外,您还打破了浏览器历史记录等约定(尽管现在一些浏览器将 JavaScript“状态”作为历史记录中的页面包含在内)。

    例子:

            $.ajax({
            url: form_url, 
            type: form_method,      
            data: form_data,     
            cache: false,
            success: function(returnhtml){                          
                $("#result").html(returnhtml); 
                $("#loadingimg").hide();                    
            }
            error: function (xhr, error) {
                alert(error);
            }
        });
    

    WORKING DEMO

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多