阅读大块头《javascript 权威指南》笔记 19-jquery 类库

  • $(fn)的完整写法是$(document).ready(fn)

  • each() 方法中的 this 指向的是element对象,而不是jquery对象。

  • data() 方法用来给jquery对象添加 or 获取数据,该数据可以是一个对象。

  • 如果插入的元素已经是文档的一部分了,这些元素只会移动到新位置,而不会复制一份,如果需要复制,则使用clone()

  • unbind()只注销jquery注册的事件处理,例如通过addEventListener()注册的是不会被注销的。

  • 通过Jquery.fx.off = true可以一键关闭所有的动画效果。

阅读大块头《javascript 权威指南》笔记 18-脚本化 http

  • Comet 是一种新的 web 应用构架,跟ajax不同的是服务端会自动向客户端推送数据,而不是客户端请求数据。

  • 一个 http 请求由 4 个部分组成:
    _ http 请求方法
    _ URL
    _ 一个可选的请求头集合,其中可能包括身份验证信息
    _ 一个可选的请求主体

  • 服务端返回的 http 响应包括 3 个部分:
    _ 一个数字和文字组成的状态码,用来显示请求的成功和失败
    _ 一个响应头集合 * 响应主体

  • 重复调用 setRequestHeader(),新值不会取代旧值,相反,会叠加。

  • 不能指定 Content-LengthDataRefererUser-Agent头,XMLHttpRequest会自动添加从而防止伪造。

  • HTTP 的请求有指定顺序,请求方法和 URL 会首先到达,然后是请求头,最后是请求体。

  • 如果在open()方法的第三个参数传入false,则是同步响应,同时也会阻塞,直到完成响应。

  • 表单数据有一个正式 MIME 类型:application/x-www-form-urlencoded,必须指定。

  • XHR2 API 允许向send()方法传入 File 对象来实现上传。

  • 通过 onprogress事件可以监听上传进度。

阅读大块头《javascript 权威指南》笔记 17-事件处理

  • onbeforeunload事件不会响应alert,所以需要这样写:window.onbeforeunload = function(){return '要离开了吗?';}

  • 事件传播是浏览器决定哪个对象触发其事件处理程序的过程。

  • 对于单个对象的特定事件(例如 window 的 load 事件)必须是不能传播的。

  • keydownkeyup之间会触发一个keypress事件,当按下键重复产生字符时,在keyup事件之前会产生很多keypress事件,其对象指定产生的字符而非按下的键。

  • document.readyState属性表示文档加载完毕(图片等未加载完毕),这样方式比window.onload要快,现代浏览器的监听方式为 addEventListener('DOMContentLoaded', fn, false)

阅读大块头《javascript 权威指南》笔记 15-脚本化文档

  • 在低于 IE 8 的版本中, getElementById()对匹配的元素的 ID 不区分大小写。

  • html 属性不区分大小写,但是 javascript 属性则区分大小写。

  • getBoundingClientRect() 方法返回元素在窗口坐标的位置信息。

  • getSelection() 得到用户选中的文字,但是不支持inputtextarea

  • el.value.substring(el.selectionStart, el.selectionEnd) 可以实现上一条不支持的作用。

阅读大块头《javascript 权威指南》笔记 14-window 对象

  • document 对象的 location 属性也引用到了 Location 对象:window.location === document.location // true

  • location.replace() 方法会在载入新文档之前删除浏览历史记录,也就是说无法通过后退键回到之前的文档。

  • navigator.onLine boolean 表示浏览器当前是否连接到了网络。

  • 一个窗口关闭了,代表它的 window 对象仍然存在,其中会有个 closed 属性的值为 true,它的 document 会是 null,它的方法也不再工作。

  • 如果一个窗口是顶级窗口或者标签,它的 parent 属性的是这个窗口本身。 parent === self // true

  • 每个 window 都有自己的原型对象,也意味着 instanceof 不能跨窗口工作,会返回 false。

阅读大块头《javascript 权威指南》笔记 13-web 浏览器中的 javascript

  • window对象是所有客户端 javascript 的特性和 API 的主要接入点,表示浏览器的窗口或窗体。

  • window对象中其中一个最重要的属性是document,它引用document对象,表示在窗口中的文档。

  • window、document、element对象上另一个重要的属性集合是事件处理程序相关的属性。可以在脚本中绑定一个函数,这个函数会在某个事件发生时以异步的方式调用,事件的属性名以单词on开头。

  • type="text/vbscript" 表示脚本用 MIME 类型,这里表示的用非标准的 vbscript,这也意味着可以使用script元素来嵌入任意的数据,只要这type属性声明为一个不可执行的类型,想要获取数据时可以获取此元素的text属性。。

  • 可以在 URL后面跟一个 javascript:协议限定符是另一种嵌入代码到客户端的方式。

  • script 元素中有 deferasync属性,可以改变脚本的执行方式(在支持的浏览器中),是布尔值属性,没有值。

  • 大部分浏览器事件中,会把一个对象传递给事件处理程序作为参数,这个对象包含了事件的详细信息,例如传递给单机事件的对象,会有一个属性说明鼠标的哪个按钮被点击了。

  • 有些事件的目标是文档元素,它们会经常往上传递给文档树,这个过程叫做冒泡.

  • 客户端 javascript 的时间线是(简化): 1. 浏览器创建document对象,并开始解析 html 元素和它们的文本内容后面添加element对象和text节点到文档中,这个时候document.readystate的值为loading.

    2. 在html解释器遇到没有`async`和`defer`属性的`script`元素时,它把这些元素添加到文档中,然后执行脚本,并且在执行时解释器会暂定,这样脚本就可以用`document.write()`把文本插入到输入流中。
    
    3. 当文档解析完毕,`document.readyState`变为`interactive`
    
    4. 这个时候文档已经解析完毕,但是浏览器可能还在等待其他内容载入,例如图片,所有完成后,`document.readyState`变为`complete`,浏览器接着触发`window`上的`load`事件。
    
    5. 此刻起,会调用异步事件,以响应用户的输入输入事件,网络事件,计时器过期等.
  • XSS攻击指的是攻击者向目标站点注入 html 标签,或者脚本。

阅读大块头《javascript 权威指南》笔记 11-服务器端 javascript

  • Rhino 是一种用 java 编写的 javascript 解释器,实现了通过 javascript 访问整个 java API。

  • Node 是官方的名字,Node.js 非官方的名字,用于和其他 Node 区分。

  • Node 是基于 C++的高速 javascript 解释器,绑定了用于进程、文件和网络套接字等底层 Unix API,还绑定了 HTTP 客户端和服务端 API。

  • 除了专门命名的同步方法外,Node 的绑定都是异步的,且默认不阻塞。

  • Node 在 process 命名空间中定义了重要的全局属性。

  • process.version 版本号

  • process.argv 命令行的数组参数

  • process.env 环境变量对象,例如 process.env.PATH

  • process.pid 进程 id

  • process.cwd() 返回当前工作目录

  • process.getuid() 返回当前用户 id

  • process.chdir() 改变目录

  • process.exit() 退出