<script>元素
defer属性:脚本延迟到文档被完全解析和显示之后再执行。
type属性:默认为text/javascript
<script>元素内的代码,从上到下以此解释,在<script>内嵌代码时,不能在代码的任何地方出现“</script>”字符串,因为按照浏览器解析规则,当遇到这串时,会认为那是结束的</script>标签,如果有必要添加该字符串,要添加上转义字符“<\/script>”就能正常显示了。
如果在XHTML中,</script>可以省略,但在HTML中不可以。
JavaScript文件中带有js扩展名,但这个扩展名不是必须的。这样一来,使用JSP、PHP动态生成js代码便成为了可能。但是服务器端通常还是需要看扩展名来决定使用哪种MIME类型,如果不使用ks扩展名,请确保返回正确但MIME类型。
如果同时<script>标签内引入代码和标签外src代码,则只会下载执行外部脚本文件,嵌入但代码会被忽略。
只要不存在defer和async属性,浏览器都会按照<script>出现但先后顺序依次加载。
现代Web应用程序一般都把全部JavaScript引用放到<body>元素中页面内容的后面。
defer属性相当于告诉浏览器立即下载,不过把延迟脚本放在页面底部仍然是最佳选择。
在XHTML文档中,要把defer的属性设置为defer=‘defer’
async属性相当于异步加载。
在XHTML中,要把async属性设置为async='async';
编写XHTML代码规则要比编写HTML严格得多,比如嵌入XHTML中的<script>元素内的js代码中不能有大于号(>)和小于号(<),因为会被当作标签解析。如果需要使用这些“有争议的符号”,可以用HTML实体(<)替换所有的小于号;另外第二个方法是使用CData片段来包含JavaScript代码<![CDTATA[……]]>片段中的代码不会被解析。
将页面中的MIME类型设置为application/xhtml+xml的情况下会触发XHTML模式。
一般认为最好的做法还是尽可能使用外部文件来包含JavaScript代码。因为有可维护性、可缓存、适应未来的优点。
文档模式包括混杂模式(quirks mode)和标准模式(standards mode),使用文档类型(doctype)切换实现。
如果文档在开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式。
<noscript>标签用于浏览器不支持脚本或被禁用的情况。