Skip to content

其他事件

表单事件

  • focus:元素聚焦的时候触发(能与用户发生交互的元素,都可以聚焦),该事件不会冒泡
  • blur:元素失去焦点时触发,该事件不会冒泡。
  • submit:提交表单事件,仅在form元素有效。
  • change:文本改变事件
  • input: 文本改变事件,即时触发

其他事件

window全局对象

  • load、DOMContentLoaded、readystatechange

window的load:页面中所有资源全部加载完毕的事件 图片的load事件:图片资源加载完毕的事件

浏览器渲染页面的过程:

  1. 得到页面源代码
  2. 创建document节点
  3. 从上到下,将元素依次添加到dom树中,每添加一个元素,进行预渲染
  4. 按照结构,依次渲染子节点

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();
    }

MIT License