在 chrome 中使用 document.removeChild() 删除脚本
Posted
技术标签:
【中文标题】在 chrome 中使用 document.removeChild() 删除脚本【英文标题】:Remove script using document.removeChild() in chrome 【发布时间】:2012-08-10 04:13:30 【问题描述】:我有一个 html 页面,其中包含许多从远程位置加载脚本的 html/head/script 标签。我想在页面加载后以编程方式从页面中删除脚本。
要删除脚本,我使用的是DOMElement
的removeChild
方法。
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 浏览器中访问搜索查询文本
在 selenium 中使用“webdriver.Chrome()”时出错 [重复]
使用 webdriver 在 Chrome 中运行 Python