2014-06-09 124 views
5

我想解析HTML代碼以提取其中的所有鏈接。爲了避免無法聯繫我刪除註釋代碼與<!--開始和-->。這裏結束問題來了:在HTML代碼中,我可能會發現一些JavaScript代碼,例如:帶評論的JavaScript代碼的HTML

<html> 
<HEAD> 
<SCRIPT LANGUAGE="JavaScript"> 
<!-- Begin 
if (document.images) { 
    var pic2 = new Image(); // for the inactive image 
    pic2.src = "pic2.jpg"; 
    var title2 = new Image(); 
    title2.src = "title2.jpg"; 
    } 
... 
--> 

而奇怪的是, JS代碼被評論,但它仍然有效。所以,如果我刪除該代碼,結果將不會如預期的那樣。我應該怎麼做才能確定何時遇到未使用的已評論代碼以及何時該已評論代碼正常工作?

回答

6

奇怪的是,該js代碼的註釋,但它仍然有效

這些都是不評論。腳本(和樣式)元素的語法是否允許在註釋語法之後,以便早於腳本和樣式的瀏覽器不會將代碼呈現爲文本。

我應該怎麼做才能確定何時遇到未使用的已評論代碼以及何時該已評論的代碼有效?

編寫一個真正的HTML解析器,跟在parsing specification之後,然後從生成的DOM中刪除任何註釋節點。


作爲一個骯髒的(但可能很快)解決方案,你可以忽略內部標記爲在HTML 4.01 DTD含有CDATA元素的意見。

+0

好的。現在事情很清楚。非常感謝你的回答。我會尋找最好的策略。 –

0

奇怪的是,該js代碼的註釋,但它仍然有效

沒有什麼奇怪的了。評論<!-- -->只能在HTML中使用,而不能在JavaScript中使用。由於您已將這些註釋放入<script>標籤中,因此您的上述代碼仍然可以使用。 唯一的區別是,如果用戶在他/她的瀏覽器上禁用了JavaScript,他將不會在瀏覽器上看到打印的代碼(因爲在沒有JavaScript的情況下HTML會解析這些註釋)。

+1

這並沒有回答這個問題(這是關於識別哪個'<! - '和' - >'是註釋,哪些不是)。你也錯了,支持JS但禁用它的瀏覽器(以及任何自1998年以來不支持JS的瀏覽器)將不會在腳本內呈現文本。它只是在HTML之前添加腳本的瀏覽器。 – Quentin

+0

Thanx爲您的答案。 –

-1

您需要註釋掉整個<腳本>塊。例如

<!-- <script> 
     ...some javascript code... 
</script> --> 
+1

問題是詢問如何識別''序列,它們是註釋,哪些不是。它不是要求如何評論腳本。 – Quentin

+0

對不起,完全錯過了那部分。 – pankaj