2015-10-18 177 views
1

可以说我有一个这样的网页:使用JavaScript删除最后一个HTML元素

<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我删除最后一个脚本元素?

+1

只是好奇...该文件如何在文档结束后结束? – Touffy

+0

我决定在某天使用免费的虚拟主机,并将其加载到弹出的广告代码中。我没有发现任何服务条款,说我不能尝试删除代码 – Mashpoe

+0

我怀疑它可能是这种情况。正如我在更新后的答案中所写的,您将无法阻止脚本的执行。你必须让它发生,然后删除损坏(不是脚本,但它会添加到您的网页的废话)。 – Touffy

回答

0

那么,首先你应该看看浏览器实际做了什么。 HTML文档不能包含文档根目录以外的元素,甚至不在<head><body>之外。比方说,src包含HTML源:

new DOMParser().parseFromString(src, "text/html") 

返回该脚本已被移动到的<body>底部的文档。

现在你知道它在解析DOM中的位置了,你可以弄清楚如何删除它,对吗?

document.body.removeChild(document.body.lastElementChild) 

然而,由于它是在文档的底部,你不能运行在加载时的代码(除非您添加甚至低于彼此脚本),因为剧本要删除不会直到解析器超出HTML结束标记为止。所以你需要等待DOM加载事件。

在评估脚本之前就没有办法将其删除,如果这是您的目的。

然而,如果你想防止脚本被解析,你可以在你的页面的最末尾添加一个未关闭评论<!--</html>后)。这将注释掉脚本,除非它带有防御性-->

+0

嗯,有没有另一种方法来停止执行脚本? – Mashpoe

+0

@Mashpoe嗯,也许如果你制作你的文件,以便注入'