完全移除Javascript

3
我有一个网站,它有一个固定的菜单、页眉等,在菜单点击时通过AJAX加载主要内容区域。
这些“页面”依赖于大量的JavaScript和CSS,每个页面都是独立的。由于用户可能访问多个页面,我想卸载页面特定的JS和CSS。卸载CSS很简单,但删除< script>标签并不能删除已加载的JavaScript(我仍然可以调用其中定义的函数)。
如何真正“删除”JS?我不想有额外的内存开销,也不想担心页面之间的名称冲突。

你的网站真的只是一个页面,当用户点击菜单项时动态加载其他页面的数据吗?你想要删除哪些 JavaScript 呢?能说得更清楚一些吗? - Jake Wilson
1
正确模块化的JavaScript不应该遇到这样的问题——将页面特定的JavaScript放在页面特定的模块中。 - Dave Newton
2
你无法从内存中删除JavaScript。这是浏览器的工作。 - DA.
1
将您的函数加载到页面特定对象中。在使用完毕后放弃该对象(将指向它的所有变量(希望只有一个)分配为null或w/e)。通过该对象进行调用。这只是一个想法。 - Thomas Eding
@trinithis 很棒的想法!如果它是一个答案(而不是一个评论),我会将其标记为答案。 - Baruch
2个回答

2
您可以将您的函数加载到特定于页面的对象中。这将需要您通过该对象进行所有特定于页面的调用。当您想要卸载页面时,使该对象指向其他内容(例如 null)。现在您没有对该对象的引用,它将由运行时清理。(假设没有其他人指向它。这很容易实现。)

1

根据Perfection Kills上的这篇文章,我的理解是只有使用eval()创建的JavaScript函数声明才能完全删除。如果是这种情况,您可以通过调用来删除该函数

delete funcName;

如果该函数不是使用 eval() 创建的,则您能做的最好的事情就是重新定义它。有很多这样的例子。这里是其中之一:javascript function redefinition


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接