JS参考手册
一、JavaScript Core API
词法结构
字符集
使用Unicode字符集
注释
单行注释
//或HTML风格的<!--
多行注释
/**/
标识符
大小写
区分大小写
空格、换行、格式控制
转义序列
字面值、类型、变量、常量
字面值
类型(字面值或量的类型)
类型种类
| 原始类型 | 布 | ||
| 符 |
|
||
| 数 |
|
||
| u |
|
||
| n |
|
||
| 引用类型 | 数组 | ||
| 对象 | |||
类型转换
| 布 | 布-->其它 |
|
|
| 其它-->布 | 隐式转换(系统默认) |
|
|
| 显示转换(强制转换) | |||
| 符 | 符-->其它 | ||
| 其它-->符 |
变量
常量
表达式
语句
二、Web浏览器API(客户端API)
Web浏览器中JS的运行
引入(四种方式)
内联(执行一次)
script元素属性表:
| 属性及默认值 | 说明 | 备注 |
| language="javascript" | 老式浏览器代替type,已废弃 | |
| type="text/javascript" | 脚本的MIME类型 |
当包含不被浏览器识别的type属性值时,
|
| src="url" | .js文件URL | |
| defer | 延迟执行 |
|
| async | 异步执行 |
|
XHTML中,“<”,“&”会解释成xml,可用CDATA包围:<![CDATA[ //JS code ]]>。
外部(执行一次)
使用src后,script标签的之间的内容会被忽略。
事件属性(执行多次)
- 属性值包含多条语句,以;分割,构成一个函数体。
- 单行注释不可用。
URL资源(执行多次)
- <a href="javascript:" />
- <form action="javascript:" />
- window.open()方法的参数
- 超链接里的URL(bookmarklet)
- 单行注释不可用
javascript:url执行后会将返回值覆盖当前文档,可以:
- void操作符强制函数调用或
- 给表达式赋予undefined
避免覆盖
执行(单线程模型,无并发,脚本和事件处理程序同一时间只能执行一个)
同步执行阶段(脚本执行阶段)
- 默认执行方式(内联和外部脚本默认情况下同步阻塞执行,阻塞文档解析和渲染)
- 可改变的执行方式:
- defer延迟脚本
- async异步脚本
- 动态创建script标签插入文档实现异步载入和执行。
异步执行阶段(事件处理阶段,事件驱动)
第一个事件:onload事件
执行时间线
- document.readystate="loading"阶段。web浏览器创建Document对象,解析web页面,解析HTML元素和文本内容添加Element对象和Text节点到文档中。
- 无async和defer的script元素时:
- 暂停解析(暂停解析文档,将元素添加入文档并同步执行,下载和执行时解析器会暂停解析。)
- 可以使用document.write()方法将文本插入输入流。解析器恢复时,这些文本成为文档的一部分。
- 可以访问自身的script元素及之前的文档内容。
- 含async的script元素时:
- 继续解析(继续解析文档,同时异步下载脚本文本并尽快执行)
- 禁止使用documnet.write()方法。
- 可能也不可能(取决于尽快的程度)访问自身的script元素及之前的文档内容。
- 含defer的script元素时:
- 继续解析,暂停脚本执行直到文档完成解析。
- 解析文档完成后,document.readystate="interactive"。
- 由于文档解析完成,含defer的script元素顺序执行
- 禁止使用document.write()方法
- 可以访问完整文档树
- 浏览器在Document上触发DOMContentLoaded事件。此时异步脚本可能没有执行。
- 载入图片,执行未执行的异步脚本后,document.readystate="complete",然后web浏览器会触发window的load事件。
Web浏览器中JS的兼容性、安全性、可访问性
兼容性
兼容性的原因(演化、未实现、Bug)
兼容性的解决
- 类库
- 分级支持
- 功能测试
- 浏览器测试
- 怪异模式和标准模式
- IE条件注释
HTML中的条件注释 单独的条件前后缀 <!--[if !|lt|gt|lte|gte IE|IE 5|IE 6|IE 7|IE 8|IE 9]> IE5~IE9能识别前后缀并解释渲染内容 其他浏览器不能识别前后缀仅当做注释 <![endif]--> 注释的条件前后缀 <!--[if !|lt|gt|lte|gte IE|IE 5|IE 6|IE 7|IE 8|IE 9]>-->(或<---->) IE5~IE9能识别前后缀但同时将里面的内容当做注释并不展示 其他浏览器不能识别前后缀仅当做注释,但此时前后缀也被注释掉,所以可以识别里面的内容。 <!--(或<!---->)<![endif]--> JS中的条件注释(IE的js解释器支持条件注释) /*@cc_on
@if(@_jscript)
@else
@end
@*/
安全性
同源策略
不严格同源策略
- Document对象的domain属性
- CORS跨域资源共享
- CDM跨文档消息
IE的Active控件和非IE的插件
XSS跨站脚本
拒绝服务攻击
可访问性(JS增强信息访问,WAI-ARIA)
BOM(宿主API)
Window
属性
普通属性
事件属性
方法
DOM(宿主下文档API)
Document对象
属性
方法
节点树的操作(增删改查)
元素节点的操作
查(访问) |
||||
| 遍历方式 | ||||
| 节点属性 |
|
|||
| 根节点 |
|
|||
| 子节点 |
|
|||
| 父节点 |
|
|||
| 兄弟节点 |
|
|||
| 快捷方式 | ||||
| 属性 | id | document.getElementById() | Element对象 | IE8以下,该方法入参不区分大小写,且返回匹配的name属性的元素 |
| name | document.getElementsByName() | NodeList对象(包含若干Element对象的数组) |
|
|
| class | document.getElementsByClassName() | |||
| 元素 | Tag | document.getElementsByTagName() | ||
| CSS选择器 | Selector | document.querySelector() | ||
| document.querySelectorAll() | ||||
| document.all | ||||
增 |
||||
|
创建 |
元素节点 | document.createElement('element')/document.createElementNS('url','element')(在使用了XML命名空间的文档中,同时指定命名空间的url和标签名) | ||
| 文本节点 | document.createTextNode('text node content') | |||
| 注释节点 | document.createComment() | |||
| 文档碎片 | document.createDocumentFragment() | DocumentFragment和Document一样独立不属于文档一部分,且把一组节点当中一个节点 | ||
| 克隆节点 | Node.cloneNode(true|false)(true:深拷贝|false:浅拷贝) | |||
| 导入节点 | document.importNode(node,true|false)(true:深拷贝|false:浅拷贝) | 除IE外 | ||
|
插入节点 |
|
|
若插入已存在的节点,则会删除已存在重新插入 | |
删 |
||||
|
删除和替换节点 |
|
|||
改 |
||||
属性节点的操作
| Node节点属性 | Node.attributes[index|name] |
|
| 标准属性 |
|
|
| 非标准属性 |
|
|
| 数据集属性 |
|
|
文本节点的操作
| Node节点文本 | Node.nodeValue | |
| Node.data | ||
| 纯文本 | Node.textContent | 除IE外都支持 |
| Element.innerText | 除FF外都支持 | |
| document.getElementsByTagName('script')[0].text(script元素text属性) | ||
| HTML文本 | document./element.innerHtml | 单独设置时效率高,使用+=拼接效率低,因为既要序列化又要解析 |
| element.outerHtml | 除FF外都支持 | |
| element.insertAdjacentHTML('beforebegin|afterbegin|beforeend|afterend','element') |
CSSOM(宿主下文档样式API)
|
内联样式 style |
|
|
|
|
|
|
计算样式 getComputedStyle() |
|
|
|
|
|
| class类 |
|
|
|
|
|
| 样式表 |
|
|
|
|
|
|
事件
异步事件驱动模型
事件类型
事件目标
事件处理程序
注册
| 属性注册 | 元素属性注册 |
|
如果事件目标为window则注册在body元素的属性上 |
| JavaScript对象属性注册 |
|
只能注册一个属性 | |
| 方法注册 |
非IE,标准API |
|
|
|
IE9以下 |
|
|
调用
| 参数 |
|
| 运行环境 |
|
| 作用域 |
|
| 返回值 |
对属性注册的处理程序
对通过方法注册的处理程序
|
| 调用顺序 |
|
事件对象
事件传播
HTML5相关API
JS参考手册的更多相关文章
- JS 参考手册
JS 参考手册 JavaScript 对象 HTML DOM 对象
- Gulp.js 参考手册,自动化构建利器
Gulp 是最新的基于 Node 的自动化构建工具,希望能够取代 Grunt,成为最流行的 JavaScript 任务运行器.通过结合 NodeJS 的数据流的能力,只需几步就能搭建起自己的自动化项目 ...
- Vue.js 2.0 参考手册.CHM下载
下载地址 Vue.js 2.0 参考手册.CHM下载链接: http://pan.baidu.com/s/1kVbhd4b 密码: wxfh
- HTML 内嵌JS脚本、相关参考手册
提供一个JS.HTML参考手册入口:http://www.w3school.com.cn/jsref/index.asp. JavaScript 最常用于图片操作.表单数据处理以及内容动态更新. &l ...
- 浏览器端-W3School:JS & DOM 参考手册
ylbtech-浏览器端-W3School:JS & DOM 参考手册 1.返回顶部 1. JavaScript 参考手册 本部分提供完整的 JavaScript 参考手册: JavaScri ...
- vue.js学习参考手册
参考手册 示例:www.51siyuan.cn/161.html
- jQuery 1.10.3 参考手册
Jquery是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7 ...
- [转] Mongoose 参考手册
Mongoose 参考手册 标签(空格分隔): MongoDB Mongoose 是什么? 一般我们不直接用MongoDB的函数来操作MongoDB数据库 Mongose就是一套操作MongoDB数据 ...
- dubbo 官方参考手册~备案(防止哪天阿里一生气把dubbo给删除了)
首页 || 下载 || 用户指南 || 开发者指南 || 管理员指南 || 培训文档 || 常见问题解答 || 发布记录 || 发展路线 || 社区 E ...
随机推荐
- C#多个线程同时执行一个任务示例
注意:如果电脑是单核单线程的,这么做是没有意义的. 这里直接贴一下主要代码 using System; using System.Collections.Generic; using System.T ...
- javascript进行百度换肤 和显示隐藏一个窗口的操作
简单的运用javascript来进行百度换肤的操作 <!DOCTYPE html> <html lang="en"> <head> <me ...
- FDFDF
Linux(Centos)之安装Nginx及注意事项 1.Nginx的简单说明 a. Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器,期初开发的目的 ...
- 提升PHP速度
PHP的优点之一是速度很快,对于一般的网站应用,可以说是已经足够了.不过如果站点的访问量很高.带宽窄或者其它的因素令服务器产生性能瓶颈的时候,你可能得想想其它的办法来进一步提高PHP的速度了.这篇文章 ...
- php中上传图片
这里来看看php中如何上传图片的 先看代码check_image.php <html> <head> <title></title> <style ...
- 自动出题判分——c#学习实践
1.程序功能自动出题—(程序随意给出10以内加减乘除)并且判断结果正确与否,正确打对勾,错误打错号. 2.设计界面: 3.代码: using System; using System.Collecti ...
- Alpha Scrum7
Alpha Scrum7 牛肉面不要牛肉不要面 Alpha项目冲刺(团队作业5) 各个成员在 Alpha 阶段认领的任务 林志松:项目发布 陈远军.陈彬:播放器各环境的测试 项目的发布说明 本版本的新 ...
- 小白学CMD下运行MySQL
将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接:mysql -h主机地址 -u用户名 -p用户密码 (注:u与root可以不用加空格,其它也一样) ...
- [attribute |= value] 与 [attribute ^= value],[attribute ~= value] 与 [attribute *= value] 的联系与区别
[attribute |= value] 与 [attribute ^= value] 的联系与区别: 一.联系: 1. 两个选择器的 attribute 属性值等于 value 时都可以匹配 < ...
- ECharts 图表设置标记的大小 symbolSize 和获取标记的值
ECharts 是百度出品,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等) ...