【发布时间】:2015-05-03 21:44:04
【问题描述】:
如果我有以下 JavaScript 代码:
<script id="someJS">
var boom = 'boom';
function example(){
alert(boom);
}
</script>
然后做:
$('#someJS').remove();
即使该 JavaScript 函数不再位于 DOM 内,我仍然可以调用 example()...如何删除它?
我不想将实际函数和变量设为:boom = null; example = null;,因为我并不总是知道 JavaScript 文件中的内容。例如函数名称、变量等。我需要能够删除该脚本标签内的全部内容。
更新:对于那些想了解此用户案例的人:
基本上在我正在开发的应用程序中,我们为某些客户端添加了自定义 JavaScript,当单击按钮时,例如保存,然后检查某些函数是否存在,然后运行它们。然而,由于这个保存按钮是通用的,这意味着自定义代码在添加后会一直被调用,即使它不再相关。
我们提出的解决方案(有人将此作为答案发布,但他们出于某种原因将其删除)是将其全部命名为:
DynamicJS = {
boom: 'boom',
example: function(message) {
alert(message);
}
}
然后我们可以这样做:delete DyanmicJS;
这会从全局范围中删除此命名空间内的所有函数和变量,从而有效地将脚本文件添加的内容分箱。
虽然我确信这不是一个完美的解决方案,就好像文件中有事件侦听器一样,但我确信它们仍然存在!
【问题讨论】:
-
“我不想让实际函数为空,因为我并不总是知道 JS 文件中的内容。” 你到底是什么意思?
-
如
example= null; -
为什么还要删除一个函数?仍然拥有它的负面影响是什么?
-
这将是唯一的方法
-
下面有一些答案可以满足您的要求...但我可能会提出真正的问题是什么? meta.stackexchange.com/a/66378/278651
标签: javascript jquery