我想动态地在我的html页面上卸载一个特定的脚本(example.js),我可以通过
var elem = document.getElementById("scid");
elem.parentElement.removeChild(elem);
其中 scid 是脚本ID
但是stll脚本的元素仍然存在,因为脚本一旦执行就会在删除标记后保留其属性。
有没有办法彻底删除所有元素和属性的javascript?
答案 0 :(得分:4)
正如您所发现的,一旦脚本运行,它定义的内容就是JavaScript环境的一部分(如果代码创建并添加DOM元素,则可能是DOM的一部分)。该代码未连接到script
元素(可以在不影响它的情况下将其删除)。
没有简单的方法。您必须找出脚本的功能,然后单独撤消这些内容。例如,如果脚本创建全局函数foo
和bar
,则在resize
上挂钩window
事件,并在页面上创建新元素,您必须设置{{ 1}}和foo
到bar
,删除undefined
处理程序(如果您没有引用它们用来挂钩它的函数,这可能很棘手),并删除页面上的新元素。
答案 1 :(得分:0)
我建议尝试使用像RequiredJs(http://requirejs.org/)之类的东西 - 这样的库你可以以模块的形式动态加载javascript代码。由于该模块是一个对象,一旦你不需要它,你可以处理它。
它有更多的优点,例如缓存,延迟加载脚本......我建议看看它是否适合你的需要。
答案 2 :(得分:0)
你可以定义一种方法来让javascript代码从javascript和dom env中破坏自己。
样本可以是:
<script>
var sample = {
destroy:function(){/*no matter what it has to clean*/}
};
</script>
然后在另一段代码中:
sample.destroy();