<script>元素
- async:可选,表示应该立即下载脚本,但是不应该妨碍页面的其他操作,只会对外部脚本文件有效。
- charset:可选,表示通过src属性指定的代码的字符集
- defer:可选,表示脚本可以延迟到文档完全被解析和显示之后再执行,只对外部脚本文件有效。
- src:可选,表示包含要执行的外部文件
- type:可选,表示编写代码使用的脚本语言的内容类型,如果这个值不指定的话,默认是text/javascript
- 可以通过<script>直接在页面中嵌入javascript代码和包含外部javascript文件。
- 如果指向外部文件的<script>中又包含了嵌入的javascript代码,那么会被忽略,只会执行所包含的文件中的代码。
- 无论如何包含代码,只要不存在defer、async属性,浏览器就会按照在页面中的出现顺序依次进行解析
- 现在默认的都会把javascript放到页面中body的最后面。
<script type="text/javascript">
function sayHi(){
alert("Hi!");
}
</script>
指向外部文件
<script type="text/javascript" src="example.js"/>
延迟脚本
defer属性用途是表明脚本在执行时不会影响页面的构造,脚本会被延迟到整个页面都完成解析后再运行。
<script type="text/javascript" defer="defer" src="example.js"/>
延迟脚本不一定会按照顺序执行,也不一定会在DOMContentLoaded事件触发前执行,因此最好只包含一个延迟脚本。
异步脚本
async只适用于外部脚本文件,并告诉浏览器立即下载文件,但与defer的不同是,async并不能保证脚本按照他们的先后顺序执行。
<script type="text/javascript" async src="example.js"/>
XHTML中的写法是:async="async"
建议异步脚本不要在加载期间修改DOM。
XHTML
不能再代码直接使用<、>等符号,解决办法是第一可以使用(<)等符号
第二种解决办法:
<script type="text/javascript"><![CDATA{
function compare(a,b){
if(a<b){
alert("A is less than B");
}else if(a>b){
alert("A is greater than B");
}
}
}
]]></script>
不兼容Javascript的解决方案
<script<!--
function sayHi(){
alert("Hi!");
}
//--></script>
给脚本加上HTML注释后,不支持Javascript语法的浏览器,就会忽略这部分代码。
文档模式
//HTML 4.0.1 严格型
<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 4.01//EN"
"html://www.w3.org/TR/html4/strict.dtd">
//XHTML 1.0严格型
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml/DTD/xhtml1-strict.dtd">
//html 5
<!DOCTYPE html>
<noscript> 元素
用以在不支持JavaScript的浏览器中显示替代的内容。