Javascript 从ajax加载的页面运行脚本的后果是什么?

Javascript 从ajax加载的页面运行脚本的后果是什么?,javascript,ajax,single-page-application,Javascript,Ajax,Single Page Application,我构建/管理SPA(单页应用程序)界面。它不使用像VueJS或React这样的现代框架。。。它使用AJAX 它是一个自定义界面,通过ajax加载部分页面。当您单击要编辑的项目时,页面或模式上的窗口将打开,AJAX中该特定页面的所有HTML和JS依赖项都将注入该页面。当加载一个新页面时,现有的html将被替换(大多数实际功能我都使用jQuery)为likehtml(新内容) 潜在问题: 在这些ajax加载的页面中,它运行javascript,例如,“单击时附加到此按钮”,“为加载到表中的内容启动d

我构建/管理SPA(单页应用程序)界面。它不使用像VueJS或React这样的现代框架。。。它使用AJAX

它是一个自定义界面,通过ajax加载部分页面。当您单击要编辑的项目时,页面或模式上的窗口将打开,AJAX中该特定页面的所有HTML和JS依赖项都将注入该页面。当加载一个新页面时,现有的html将被替换(大多数实际功能我都使用jQuery)为like
html(新内容)

潜在问题:

在这些ajax加载的页面中,它运行javascript,例如,“单击时附加到此按钮”,“为加载到表中的内容启动datatables类”等。加载另一个页面时,它将替换上一个页面中的现有内容,新页面将再次加载自己的JS

1) 从Ajax页面加载的唯一变量即使从Ajax加载了新页面,仍然存在。(查看控制台中的变量是否存在),我假设加载的同名变量被替换为新值

2) 正在添加的函数/类即使在我要求它删除所有内容后仍会嵌入内存中

另一个例子是,如果在创建新页面后运行
setInterval()
计时器 加载并替换现有内容后,setInterval仍为 跑步

你的想法是什么?如果用户没有使用浏览器刷新重新加载实际页面,那么反复加载这些ajax页面最终会耗尽客户端设备的内存


是否有办法在加载每一页后保持干净,以便删除内存中加载的现有变量?还是确保加载的每一页都包装到一个匿名函数中,并在加载每一页后清除

听起来你污染了全球范围,这是你永远不应该做的事情。因此,是的,您必须确保所有的代码
…都被包装到一个匿名函数中,…
,并且只有那些真正需要公开的部分才被公开。关于
setInterval
或类似的事情,如果你卸载一个页面,你应该为该页面提供一个清理脚本,它可以清理gc自己无法完成的所有事情。关于
[…],那么反复加载这些ajax页面将最终耗尽客户端设备的内存[…]
如果是这种情况,那么您的加载策略是错误的。@t.niese这是一个很好的观点。我应该为加载的所有页面提供一个清理方法,因为我想卸载。@t.niese另一个问题是加载
on()
方法。基于触发器/点击连接到按钮/链接等。如果我加载另一个页面,那些附加的触发器仍在运行,不是吗?这就是清理方法应该清理的内容?