回顾学习JS(第二章学习随笔第一篇)
在HTML中使用JavaScript
1、使用script元素
1.src 可选 。标识包含要执行的外部代码文件
<script src="www.baidu.com"></script>
2.language 已经废弃。原来用于标识编写代码使用的脚本语言。现在大多数浏览器会忽略这个属性,所以没有必要使用了。
3.charset 可选。 表示用过src属性指定的代码的字符集。大多数浏览器会忽略这个值。因此这个属性很少人使用
4.type 可选。可以看成是language的替代属性;标识编写代码时用的脚本语言的内容类型(MIME类型)
<script type="text/javascript"></script>
<script type="text/ecmascript"></script>
这两种写法已经不推荐使用,因为服务器在传送JavaScript文件时使用的MIME类型通常是application/x-javascript,在type中设置这个值却可能会被忽略。
考虑到约定俗成和最大限度的浏览器兼容行,目前type属性的值已经还是"text/javascript“。不过不是必需的,即使没有指定这个属性,器默认值仍然是"text/javascript“。
5.async 可选。表示应该立即下载这个脚本。但不妨碍页面中的其他操作。只适用于外部引用的脚本。
<script type="text/javascript" async src="test.js"></script>
<script type="text/ecmascript" async src="test.js"></script>
他们会同时执行,但不保证执行的先后顺序。(注意: 因为不能保证先后执行顺序,所以要确保两者之间不会互相有依赖。)
async属性的目的是不让页面等待两个脚本下载和执行,从而一部加载页面其他内容,以你。建议异步脚本不要在加载期间修改DOM。
6.defer 可选。 标识脚本可以延迟到文档完全被解析和显示之后在执行。只对外部脚本文件有效。
<script type="text/javascript" defer="defer " src="test.js"></script>
<script type="text/ecmascript" defer="defer" async src="test.js"></script>
会在所有元素加载完毕后在加载。(注意规定按先后顺序执行,但在现实中不一定按顺序执行,所以建议只包含一个延时执行脚本)
2、HTML和XHTML
HTML和XML的区别在于,XML代码规则要比HTML严格得多,而且直接影响能否在嵌入JavaScript代码时使用
<script>
function compare(a,b) {
if(a < b) {
alear("A" is less than "B")
}
}
</script>
以上代码在HTML中是有效的,但是在XHTML中是无效的,因为在这里的比较语句中 “<” 会在XHTML中被当做开始一个新标签来解析,但是作为标签来讲小于号后面不能跟空格,就会导致语法错误。
避免在XHTML中出现的类似错误语法方法有两个,一是用相应的HTML实体"<"来替代。但这种方法会导致代码不好理解,所以才用另一种方法,使用CData来包含JavaScript代码。
<script><![CDATA[
function compare(a,b) {
if(a < b) {
alear("A" is less than "B")
}
}
]]</script>
这种方法在所有的现代浏览器中都可以正常使用,也能用过XHTML验证,而且对XHTML之前的浏览器也会平稳退化。