如何在不刷新页面的情况下重新加载javascript

新手上路,请多包涵

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

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

是否可以仅使用 JavaScript(没有 JQuery/Angular 或任何第三方库/框架等)在不刷新浏览的情况下重新加载 javascript 文件?

原文由 MyDaftQuestions 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

如果您打算提供数据或 新的 小部件:

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

如果您出于某种原因反对这样做,并且如果您只从 您控制 的盒子中提取新数据,您也可以尝试使用 JSONP

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

如果您打算“升级”页面或替换功能:

只是不要这样做。虽然您可以轻松添加新脚本,但如果不 进行大量 簿记,就无法可靠地“清理”页面上的旧脚本或变量。除非您的脚本 非常 非常 简单,否则您会遇到不少麻烦。

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

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

原文由 svidgen 发布,翻译遵循 CC BY-SA 3.0 许可协议

有可能的。

看看 lite-server

轻量级开发仅服务于网络应用程序的节点服务器,在浏览器中打开它,在 html 或 javascript 更改时刷新,使用套接字注入 CSS 更改,并在找不到路由时具有后备页面。

它在内部使用 BrowserSync ,它:

… 在每个通过 WebSockets 与服务器通信的页面中注入一个小脚本。当事件发生时——例如文件修改或滚动操作——服务器会向所有连接的设备发送更新通知。

如果您不能使用 3rd 方代码,您可以自己重新实现类似的东西。

原文由 Maxim Egorushkin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题