如何重新加载JavaScript而不刷新页面

我们有一些软件可以重新创建JavaScript文件。 我们需要能够在不刷新页面的情况下将它们重新加载到DOM中。 这意味着原始的JavaScript文件(已经由浏览器加载)已经改变。 通常刷新浏览器可以解决这个问题,但是由于在其他控件中丢失状态,我们无法做到这一点。

我对此的搜索只返回关于用javascript刷新浏览器的结果,这不是我想要的。

是否有可能重新加载JavaScript文件,而不刷新浏览只有JavaScript(没有JQuery / Angular或任何第三方库/框架等)?


如果您的意图是提供数据或新的小部件:

香草AJAX很简单,无处不在。 去做。

如果您反对,无论出于何种原因,并且如果您仅从您控制的框中提取新数据,则还可以尝试使用JSONP。

var s = document.createElement('script');
s.src = 'path/to/script-that-injects-data-or-NEW-widgets.js';
document.body.appendChild(s);

如果您的目的是“升级”页面或替换功能:

只是不要这样做。 虽然您可以轻松添加新脚本,但无法在没有大量簿记的情况下可靠地“清理”旧脚本或变量页面。 除非你的脚本非常非常简单,否则你可能会遇到不少麻烦。

更好的解决方案是通知用户升级,要求他们刷新页面,并确保您的应用可以快速重新初始化为之前的状态。

最终,如果您想在原地“升级”应用程序,则无论如何您都会想要在幕后刷新所有内容。 这意味着你需要知道如何重建所有东西来匹配现有的/先前的状态。 而且,你可以做到这一点。 但是,刷新页面会更容易,这样可以更好地确保一个干净,兼容的状态,而无需大惊小怪。


有可能的。

看看lite-server:

服务于Web应用程序的轻量级开发节点服务器,在浏览器中打开它,在HTML或JavaScript更改时刷新,使用套接字注入CSS更改,以及未找到路径时具有回退页面。

它在内部使用BrowserSync,其中:

...向每个通过WebSockets与服务器通信的页面插入一个小脚本。 发生事件时(如文件修改或滚动操作),服务器会向所有连接的设备发送更新通知。

如果你不能使用第三方代码,你可以自己重新实现。


function loadScript(src, callback)
{
  var script,
      scriptTag;
  script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = src;
  script.onload = script.onreadystatechange = function() {
    if (!this.readyState || this.readyState == 'complete' )
    {
      callback();
    }
  };
  scriptTag = document.getElementsByTagName('script')[0];
  scriptTag.parentNode.insertBefore(script, sriptTag);
}
链接地址: http://www.djcxy.com/p/42467.html

上一篇: How to reload javascript without refreshing the page

下一篇: How do you dynamically load a javascript file from different domain?