其他事件
表单事件
- focus:元素聚焦的时候触发(能与用户发生交互的元素,都可以聚焦),该事件不会冒泡
- blur:元素失去焦点时触发,该事件不会冒泡。
- submit:提交表单事件,仅在form元素有效。
- change:文本改变事件
- input: 文本改变事件,即时触发
其他事件
window全局对象
- load、DOMContentLoaded、readystatechange
window的load:页面中所有资源全部加载完毕的事件 图片的load事件:图片资源加载完毕的事件
浏览器渲染页面的过程:
- 得到页面源代码
- 创建document节点
- 从上到下,将元素依次添加到dom树中,每添加一个元素,进行预渲染
- 按照结构,依次渲染子节点
document的DOMContentLoaded: dom树构建完成后发生
readystate: loading、interactive、complete
interactive:触发DOMContentLoaded事件
complete:触发window的load事件
js代码应该尽量写到页面底部
css应该写到页面顶部:避免出现闪烁(如果放到页面底部,会导致元素先没有样式,使用丑陋的默认样式,然后当读到css文件后,重新改变样式)
JS应该写到页面底部:避免阻塞后续的渲染,也避免运行JS时,得不到页面中的元素。
unload、beforeunload
beforeunload: window的事件,关闭窗口时运行,可以阻止关闭窗口 unload:window的事件,关闭窗口时运行
- scroll
窗口发生滚动时运行的事件 元素上面也会触发
通过scrollTop和scrollLeft,可以获取和设置滚动距离。
- resize
窗口尺寸发生改变时运行的事件,监听的是视口尺寸
- contextmenu
右键菜单事件
- paste
粘贴事件
- copy
复制事件
- cut
剪切事件
粘贴、复制、剪切的事件对象可以进行操作的:
clipboardData对象是存储在内存中的,现在浏览器已经收回了对剪切板的写入权限
js
var txt = document.querySelector("textarea");
txt.onpaste = function(e) {
// e.preventDefault();
var clipboardData = e.clipboardData || window.clipboardData
var data = clipboardData.getData("text/plain");
data = "来自于粘贴:" + data;
clipboardData.setData("text/plain", data);
// clipboardData.clearData("text/plain");
}
txt.oncopy = function(e) {
// e.preventDefault();
}