在以下示例中:
<!--[if lt IE 9]>
<script src="./js/lib/modernizr.custom.js"></script>
<![endif]-->
JSLint 在最后一行抛出一个错误,说“嵌套注释。”。我似乎无法在 Internet 上找到“修复”此问题的方法。有人有解决方案吗?
在以下示例中:
<!--[if lt IE 9]>
<script src="./js/lib/modernizr.custom.js"></script>
<![endif]-->
JSLint 在最后一行抛出一个错误,说“嵌套注释。”。我似乎无法在 Internet 上找到“修复”此问题的方法。有人有解决方案吗?
在我看来,这似乎是 JSLint 中的一个错误(或者可能是一个疏忽)。处理 HTML 注释的代码如下:
// ...
case '<!--':
length = line;
for (;;) {
i = source_row.indexOf('--');
if (i >= 0) {
break;
}
i = source_row.indexOf('<!'); // This line causes the problem
if (i >= 0) {
stop_at('nested_comment', line, character + i);
}
if (!next_line()) {
stop_at('unclosed_comment', length, c);
}
}
// ...
基本上,当 JSLint 遇到打开的注释标记 ( <!--
) 时,它会遍历源代码的行,直到遇到关闭的注释标记 ( -->
,上面的代码片段中没有显示)。如果在该迭代期间它<!
在注释的任何行的任何位置遇到字符串,它将引发您看到的“嵌套注释”错误。
不幸的是,除了不使用 JSLint 进行标记验证(我通常会推荐)之外,实际上并没有办法解决这个问题。我会看看我是否能找到一个很好的方法来修复它,然后提交一个补丁。