2015-10-18 178 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嗯,也許如果你製作你的文件,以便注入'