为什么注释会影响我的文件的逻辑

Why do comments affect the logic of my file?

本文关键字:文件 我的 注释 影响 为什么      更新时间:2023-09-26

编辑:

在这里,它显示这是一个评论。在我的IDE中,它将其显示为代码。太奇怪了(代码集#2):

<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="bootstrap-3.3.2-dist/js/bootstrap.min.js"></script>

我有两个档案。一个有评论,一个没有。第一组代码功能完美。第二组代码告诉我JavaScript控制台中的Uncaught ReferenceError: $ is not defined,并且不调用警报。为什么这些评论会影响我的剧本?

代码集#1

<!DOCTYPE html>
<html lang="en">
<head>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="bootstrap-3.3.2-dist/js/bootstrap.min.js"></script>
</head>
<body>
<script>
    $(function () {
        alert("JQUERY!");
    });
</script>
</body>
</html>

代码集#2

<!DOCTYPE html>
<html lang="en">
<head>
    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
    <script src="bootstrap-3.3.2-dist/js/bootstrap.min.js"></script>
    <![endif]-->
</head>
<body>
<script>
    $(function () {
        alert("JQUERY!");
    });
</script>
</body>
</html>

这些不是普通注释,而是条件注释。请参阅:http://www.quirksmode.org/css/condcom.html

上面的注释注释了所有javascript都包含的注释,因此它们不会被加载,除非在低于版本9的Internet Explorer中。

您会收到错误消息,因为jquery没有加载(它在HTML注释中)。如果您使用例如IE8,则不会出现错误。

<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="bootstrap-3.3.2-dist/js/bootstrap.min.js"></script>
<![endif]-->

if构造有用于IE的条件注释。

只有在使用版本号大于9的IE时,才会呈现脚本标记。其他所有浏览器都会将整个部分视为一条注释,而不包含任何javascript。

您的文件期望加载jQuery。似乎您注释掉了jQuery脚本,必须包含jQuery脚本。未注释:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

浏览器不会运行它,对吗?它只会在任何情况下由服务器流式传输,并由客户端下载。

它应该没有任何区别,只要你没有太多字符

尽管动态页面是在服务器端生成的,但您可能必须使用服务器端注释,例如:<%-comment-->或{%comment%}

<!--[if lt IE 9]>&<![endif]-->是IE的条件注释。其他浏览器会将其作为注释读取。如果您使用的IE版本晚于9,则会加载这些脚本,这可能会导致与其他脚本发生冲突。