假设我有一个这样的网页:
<html>
<head>
<script>
//code that deletes the last element
</script>
</head>
<body>
<h1>nothing important in the body</h1>
</body>
</html>
<!-- and then there is another script element that I want to remove with javascript: -->
<script type="text/javascript" src="example.com"></script>
如何使用javascript删除最后一个脚本元素?
答案 0 :(得分:0)
嗯,首先你应该看看浏览器实际上做了什么。 HTML文档不能包含文档根目录之外的元素,甚至不能包含<head>
和<body>
之外的元素。假设src
包含您的HTML源代码:
new DOMParser().parseFromString(src, "text/html")
返回一个文档,其中脚本已移至<body>
的底部。
现在你知道它在解析的DOM中的位置,你可以弄清楚如何删除它,对吗?
document.body.removeChild(document.body.lastElementChild)
但是,由于它位于文档的底部,因此您无法在加载时运行该代码(除非您添加另一个脚本甚至低于该脚本),因为要删除的脚本将不会在DOM中解析器超出HTML结束标记。所以你需要等待DOM加载事件。
如果这是你的目的,那么在评估脚本之前就没有办法删除它。
但,如果您希望阻止解析脚本,您可以在页面的最后添加未关闭的评论<!--
(之后) </html>
)。除非它附带防御性-->
,否则将会对脚本进行注释。