在 chrome 中使用 document.removeChild() 删除脚本

Posted

技术标签:

【中文标题】在 chrome 中使用 document.removeChild() 删除脚本【英文标题】:Remove script using document.removeChild() in chrome 【发布时间】:2012-08-10 04:13:30 【问题描述】:

我有一个 html 页面,其中包含许多从远程位置加载脚本的 html/head/script 标签。我想在页面加载后以编程方式从页面中删除脚本。

要删除脚本,我使用的是DOMElementremoveChild 方法。

element.removeChild(child);

此调用成功执行,但从脚本加载的函数仍在内存中。对加载的函数没有影响。

我也试过了:

element.replaceChild( new, old );

两者都没有效果。 这是错误还是功能? 如何以编程方式删除以前加载的脚本?

【问题讨论】:

您不能简单地忽略导致问题的.js 文件吗? 要是这么简单就好了...:P... 【参考方案1】:

在加载后删除脚本元素不会删除脚本本身。我不知道如何“卸载”已经加载的脚本。如果有要替换的目标函数,可以重新定义那些全局符号,这些符号只会用不同的代码替换旧代码,但javascript不提供卸载功能。

例如,如果脚本有一个名为 callMe() 的全局函数,您可以在全局范围内将该函数重新定义为其他内容:

function callMe()  /* replacement function that does nothing */

无论哪个定义最后出现,都将生效。

【讨论】:

有趣。如何重新定义全局函数?原谅我,我是 JavaScript 开发新手。 @Nambi - 我在关于替换函数的答案中添加了更多内容。 如果“function callMe()”在另一个远程脚本中,并且远程脚本使用appendChild()添加到dom,它会重新定义“callMe()”吗? @Nambi - 如果callMe() 是任何脚本中的全局可访问函数,并且您在加载动态加载的脚本后运行重新定义代码,是的,它将重新定义它。

以上是关于在 chrome 中使用 document.removeChild() 删除脚本的主要内容,如果未能解决你的问题,请参考以下文章

使用 Chrome 扩展程序在 Google Chrome 浏览器中访问搜索查询文本

在Chrome 中使用Vimium

在 selenium 中使用“webdriver.Chrome()”时出错 [重复]

使用 webdriver 在 Chrome 中运行 Python

使用 --userdata dir 参数和隐身模式在 c# 中打开 chrome

如何在 Windows 中使用命令提示符获取 chrome 版本