Cam*_*ron 21 javascript jquery
如果我有以下JavaScript代码:
<script id="someJS">
var boom = 'boom';
function example(){
alert(boom);
}
</script>
Run Code Online (Sandbox Code Playgroud)
然后做:
$('#someJS').remove();
Run Code Online (Sandbox Code Playgroud)
example()即使JavaScript函数不再在DOM中,我仍然可以调用...如何删除它?
我不想将实际的函数和变量用null:boom = null; example = null;因为我并不总是知道JavaScript文件中的内容.例如函数名称,变量等.我需要能够删除该脚本标记内部的内容.
更新:对于那些想知道用户案例的人:
基本上在我正在处理的应用程序中,我们为某些客户端添加了自定义JavaScript,当单击按钮时例如保存,然后检查是否存在某些功能然后运行它们.但是,因为此保存按钮是通用的,这意味着即使它不再相关,自定义代码在添加后也会一直被调用.
我们提出的解决方案(某人将此作为答案发布但由于某种原因将其删除)是将其命名为:
DynamicJS = {
boom: 'boom',
example: function(message) {
alert(message);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我们可以这样做:delete DyanmicJS;
这将从全局范围中删除此命名空间内的所有函数和变量,从而有效地分类脚本文件添加的内容.
虽然我确信这不是一个完美的解决方案,就好像你在文件中有事件监听器,我相信它们仍然存在!
T.J*_*der 36
我该如何删除它?我不想将实际函数置空,因为我并不总是知道JS文件中的内容.
你不能.脚本代码被执行,在JavaScript环境中创建事物,并且与加载它的元素完全断开连接script.除了完全重新加载该环境之外,如果您不知道代码的作用,则无法撤消它.
即使你可以推断一些代码所做的事情(例如,通过在前后制作全局变量列表),你可以删除你检测到的新全局变量(或者至少将它们设置为null或者undefined,因为delete它不适用于全局变量通过函数声明或var)添加,这不会告诉您代码可能已连接的事件处理程序,Web工作者等.
Cer*_*rus 16
$('#someJS').remove(); 仅从页面中删除脚本元素.
删除元素时,脚本已经被解释,这意味着example已添加到全局范围.
要正确删除该功能,您可以执行以下操作:
window.example = null;
Run Code Online (Sandbox Code Playgroud)
但是,显然你不想这样做,如果在其他地方有实际使用的脚本,这将导致一大堆错误example.
另一种方法是为其分配一个空函数:
window.example = function(){};
Run Code Online (Sandbox Code Playgroud)
这将防止"删除"导致错误.
(除了可能预期的函数不返回值)
处理完该函数后,它现在window是函数可执行列表的一部分- 无论是否删除原始源.
要完全删除该功能,请尝试:
window['example'] = null;
Run Code Online (Sandbox Code Playgroud)
但是,根据您的上次评论:
我不想将实际函数置空,因为我并不总是知道JS文件中的内容.
听起来你想要保持对函数的引用但不能直接执行它?如果是这种情况,您可以存储对它的引用并删除原始:
var _exampleBackup = window['example'];
window['example'] = null;
Run Code Online (Sandbox Code Playgroud)
要调用它,您现在可以使用:
_exampleBackup();
Run Code Online (Sandbox Code Playgroud)
要恢复它,如果你需要:
window['example'] = _exampleBackup;
example();
Run Code Online (Sandbox Code Playgroud)
该功能仍在窗口中。
您放置在脚本标记中的代码将在创建元素时运行,并且本身不再具有任何值(大致)。删除标签不会影响文档及其对文档的影响(通常)。
要删除函数,您需要删除对象example上的window属性,即函数的定义方式,运行上面的代码。
| 归档时间: |
|
| 查看次数: |
2570 次 |
| 最近记录: |