JavaScript是一种专为与网页交互二设计的脚本语言,由三个不同部分:
<script>元素
- ECMAScript,由ECMA-262定义,提供核心语言功能;
- 文档对象模型(DOM),提供访问和操作网页内容的方法和接口;
- 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
文档对象模型(DOM)
是针对XML但经过扩展用于HTML的应用程序编程接口。DOM把整个页面映射为一个多层节点结构。HTML或XML页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。
通过DOM创建的文档的树形图,开发人员获得控制页面内容和结构的主动权。借助DOM提供的API,开发人员可以轻松自如的删除,添加,替换或修改任何节点。
DOM1级由两个模块组成:DOM核心(DOM Core)和DOM HTML;
目标主要映射文档的结构;
DOM2级在原来DOM基础上又扩充了鼠标和用户界面事件,范围,遍历(迭代DOM文档的方法)等细分模块,并且通过对象接口增加了对CSS的支持
- DOM视图
- DOM事件
- DOM样式
- DOM遍历和范围
DOM3级进一步扩展:
- 加载和保存文档
- 验证文档
浏览器对象模型(BOM)
- 弹出新浏览器窗口功能
- 移动,缩放和关闭浏览器窗口
- 提供浏览器详细信息的navigator对象
- 提供浏览器所加载页面的详细信息的location对象
- 提供用户显示器分辨率详细信息的screen对象
- 对cookies的支持
- 像XMLHttpRequest和IE的ActiveXObject这样的自定义对象
- defer延迟脚本:脚本可以延迟到文档完全被解析和显示之后在执行,只对外部脚本有效。他们总是按照指定它们的顺序执行,但是在现实当中,不一定会按照顺序执行,也不一定会在DOMContentLoaded事件触发前执行,所以最好只包含一个延迟脚本。
- 支持HTML5的高版本会忽略defer属性,所以放在页面底部是最佳选择
- <script type="text/javascript" defer="defer" src="a.js"></script>
- async异步脚本:立即下载脚本,但不妨碍页面中的其他操作,只对外部脚本有效。
<script type="text/javascript" async="async" src="a.js"></script>
文档模式DOCTYPE
- 混杂模式 (quirks mode)
- 在文档开头处没有文档类型声明,会默认开启混杂模式
- 会让IE行为与IE5相同
- 标准模式 (standards mode)
- HTML 4.01 严格型
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://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/xhtml1/DTD/xhtml1-strict.dtd">
- HTML 5:
- <!DOCTYPE html>
- HTML 4.01 严格型
- 准标准模式
- 这种模式下的浏览器特性有很多都是符合标准的,不标准的地方主要体现在处理图片间隙的时候(在表格中使用图片时问题最明显)。
- 过渡型(transitional):HTML 4.01,XHTML 1.0
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- 框架集型(frameset):HTML 4.01,XHTML 1.0
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<noscript>元素
目的:当浏览器不支持JavaScript让页面平稳退化
在不支持脚本的浏览器中显示的替代内容,但在启用了脚本,浏览器不显示<noscript>内容
<!DOCTYPE html><html><head><meta charset= "UTF-8" ><title> noscript </title><script>alert ( "a" ) ;</script></head><body><noscript><p> 本页面需要启用 JavaScript </p></noscript></body></html >