编辑:
在这里,它显示这是一个评论。在我的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>
答案 0 :(得分:5)
这些不是普通的评论,而是有条件的评论。 请参阅:http://www.quirksmode.org/css/condcom.html
以上评论评论所有javascript包含,因此它们不会被加载,除非Internet Explorer低于版本9。
您收到错误消息,因为未加载jquery(它位于HTML注释中)。如果您使用例如IE8出现了错误。
答案 1 :(得分:2)
<!--[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的conditional comment。
只有当您使用版本号大于9的IE时,才会呈现脚本标记。每个其他浏览器都会将整个部分视为单个注释,而不包含任何该javascript。
答案 2 :(得分:1)
您的文件希望加载jQuery。看来你注释掉了jQuery脚本,你必须包含jQuery脚本,取消注释:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
答案 3 :(得分:0)
它不会被浏览器运行吗?它只会在服务器流式传输的每种情况下,并由客户端下载。
只要您没有太多字符
,它就不会有任何区别虽然动态页面是在服务器端生成的,但您可能必须使用服务器端注释,例如:&lt;% - comment - %&gt;或{%comment%}
答案 4 :(得分:0)
<!--[if lt IE 9]>
&amp; <![endif]-->
是对IE的条件评论。其他浏览器会将它们作为注释读取。如果您使用的是晚于9的IE版本,则会加载这些脚本,这可能会导致与其他脚本冲突。