我正在尝试解析HTML代码以便提取其中的所有链接。为了避免不可用的链接,我删除了以<!--
开头并以-->
结尾的注释代码。这就出现了问题:在HTML代码中,我可能会找到一些JavaScript代码,例如:
<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代码已被注释但它仍然有效。因此,如果我删除该代码,结果将不会如预期的那样。我应该怎么做以确定我何时面对未使用的注释代码以及该注释代码何时起作用?
答案 0 :(得分:6)
奇怪的是,js代码已被注释,但仍可正常工作
那些不是评论。是仅允许在注释语法后面的脚本(和样式)元素中使用语法,以便在脚本和样式之前的浏览器不会将代码呈现为文本。
我应该怎么做以确定我何时面对未使用的评论代码以及该评论代码何时起作用?
按照parsing specification编写一个真实的HTML解析器,然后从生成的DOM中删除任何注释节点。
作为一种肮脏(但可能很快)的解决方案,您可以忽略HTML 4.01 DTD中标记为包含CDATA的元素内的注释。
答案 1 :(得分:0)
奇怪的是,js代码已被注释,但仍可正常工作
没有什么奇怪的。评论<!-- -->
仅适用于HTML,而不适用于JavaScript。由于您已将这些注释放在<script>
标记内,因此上述代码仍然有效。
它唯一的区别是,如果用户在他/她的浏览器上禁用了JavaScript,他将不会在浏览器上看到打印的代码(因为HTML会在没有JavaScript的情况下解析这些注释)。
答案 2 :(得分:-1)
你需要注释掉整个&lt; script&gt;块。 e.g。
<!-- <script>
...some javascript code...
</script> -->