【发布时间】:2012-07-20 18:42:44
【问题描述】:
如何在脚本元素被执行之前删除它们?
我考虑过使用 DOMNodeInserted 事件,但显然它没有捕获脚本元素。我也尝试过像这样使用 jQuery livequery 插件:
$("script").livequery(function () {
$(this).remove();
});
它确实删除了脚本元素,但在它被执行之后。
我正在寻找一个跨浏览器的解决方案,但我什至不确定这是否可能。我读到了Mutation Observers,这似乎足够接近,但我不确定它是否能解决我的问题。
如果有一种方法可以在脚本内容执行之前修改它而不删除和重新创建它,那就更好了。
【问题讨论】:
-
我不知道解决办法,但我有个问题:为什么要删除它们(似乎是因为用户而添加的)?如果有人想执行代码,他也可以使用javascript控制台?
-
如果您可以检测到脚本并阻止它执行,则修改代码应该很容易,因为您只需获取 src 属性,将其加载为文本(在 ajax 中),修改并执行它。在您可以使用突变观察者观看 DOM 之后,但是要使其正常工作,浏览器需要在加载和执行文件之前添加脚本标记,我找不到任何相关信息。好像是后者,然后检测脚本标签的插入将是无用的,因为它们已经运行了。
-
只是想在不知道上下文或问题的情况下补充说,这听起来像是一种奇怪的解决方案方法,并且是一种让你很头疼的方法。如果您解释上下文,也许有些人可能会提出更明智的解决方案
-
您要解决的真正问题是什么?您当前的解决方案路径似乎很奇怪,而且不太可能成功,因此您可能有更好的机会支持并解释您要解决的真正问题。
-
@AlonGubkin 那些脚本是动态添加的吗?
标签: jquery