在JavaScript代码周围使用HTML注释标记仍然有意义吗?
我的意思是
<html>
<body>
<script type="text/javascript">
//<!--
document.write("Hello World!");
//-->
</script>
</body>
</html>
Answers:
HTML注释,即 <!-- -->
,不再需要。它们旨在允许不理解该<script>
标记的浏览器正常降级。这些浏览器,例如 Netscape 1.x不再在野外找到。因此,再也没有必要在脚本标记中添加HTML注释了。
如果希望HTML验证为XHTML或XML,则可能要使用注释掉的CDATA标记。
<script type="text/javascript">
//<![CDATA[
document.write("Hello World!");
//]]>
</script>
这样做的原因是为了确保你<
,>
,&
,"
和'
这是你的JavaScript代码部分不会有被编码为<
,>
,&
,"
和'
分别。
</script>
通常会分解为</scr
和ipt>
。
]]>]]<![CDATA[>
☺
<script>
正确理解了这些内容),那么我认为CDATA
传统注释上方的代码块没有显着的优势。唯一的区别是<script>
官方是否具有内容-关于搜索引擎,我们可能希望它不具有内容...
最好只是一起避免体内使用JavaScript。它使事情更容易更新,避免了注释的需要,并迫使您为未启用JavaScript的用户以及启用JavaScript的用户进行计划。
.js
文件中而不是HTML中,会使更新变得更加困难,因为.js
可能会缓存文件。
<script type="text/javascript" src="http://example.com/path/to/file.js?v1.0"></script>
不是您做事的方式,不。
<!-与javascript中的//相同,因此您的代码应如下所示:
<script type="text/javascript">
<!--
document.write("Hello World!");
//-->
</script>
..与您的不同之处在于,一种罕见的,可能无法理解script标签的浏览器会在屏幕上显示//开头,这违背了将comment标签放在第一位的目的。
如果您好奇的话,这里有更多信息:http : //www.javascripter.net/faq/comments.htm
但是最后,即使是默认情况下不支持javascript的超级晦涩的浏览器(如HTMLLayout浏览器或Netsurf)也知道最好不要在脚本标签之间呈现文本,因此不,它不再与任何方式相关。但是,您可能会关心的所有浏览器都了解<!-语法,因此没有真正的必要疯狂地担心将其从现有内容中删除,因为它是有效的js,请记住不要在下次添加它。
即使在现代浏览器中,它也很有用。我今天实际上遇到了这个问题,正是因为我想避免将javascript嵌入我的html中。
我有一个是担任了一个HTML页面http://host/variable_app_name/pagename
,在这里variable_app_name
可以有很多值(你知道的,可变的)。如果要访问静态文件,则必须使用url这样的网址http://host/static/variable_app_name/filename
,因此如果不先查看浏览器的位置以查找的值,就无法指定静态文件的位置variable_app_name
。
要链接到主要的javascript文件,请执行以下操作:
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
</script>
即使在最新版本的Chrome中,上述代码也会爆炸,因为script标签将在javascript字符串的中间终止,而字符串的其余部分将被解释为html,如下所示:
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js">
</script>
\n');
</script>
有很多方法可以解决此问题,但是我喜欢使用html注释。
带有html注释:
<script type="text/javascript" >
<!--
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></script>\n');
-->
</script>
分解javascript字符串:
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
document.write('<script type="text/javascript" src="/static/'+variable_app_name+'/pagename.js"></scr'+'ipt>\n');
</script>
创建并附加脚本标签,而不是使用document.write:
<script type="text/javascript" >
var variable_app_name = window.location.pathname.split('/')[1];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '/static/'+variable_app_name+'/pagename.js';
document.head.appendChild(script);
</script>
我喜欢使用html注释,因为这是一个简洁的更改,不需要为每个链接文件进行复制或考虑。