zoukankan      html  css  js  c++  java
  • 事件(四):事件类型

    事件类型

    web浏览器中可能发生的事件有很多类型:
    UI事件:当用户与页面上的元素交互时触发;
    焦点事件:当元素获得或失去焦点时触发;
    鼠标事件:当用户通过鼠标在页面上执行操作时触发;
    滚轮事件:当使用鼠标滚轮(或类似设备)时触发;
    文本事件:当在文档中输入文本时触发;
    键盘事件:当用户通过键盘在页面上执行操作时触发;
    合成事件:当为IME(input method editor,输入法编辑器)输入字符时触发;
    变动事件:当底层dom结构发生变化时触发。
    变动名称事件:当元素或属性名变动时触发。此类事件已经被废弃,没有任何浏览器实现它们

    UI事件

    1、load事件

    <body onload="alert('Loaded')">
        <input type='button' value='click me' id='myBtn'/>
    </body>

    图像也可以触发load事件

    <img  src="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png"  onload="alert('image Loaded')">

    2、unload事件 与load事件对应的是unload事件,这是事件在文档被完全卸载后触发。只要用户从一个页面切换到另一个页面,就会发生unload事件。而利用这个事件最多的情况是清除引用,以避免内存泄漏。

    <body onunload="alert('unloaded!')"></body>

    或者

    EventUtil.addhandler(window,'unload',function(){
        alert('unloaded');
    })

    无论是用哪种方式,都要小心编写onunload事件处理程序中的代码,既然unload是在一切都被卸载之后才触发,那么在页面加载后存在的那些对象,此时就不一定存在了。

    3、resize事件 当浏览器窗口被他调整到一个新的高度或宽度时,就会触发resize事件

    EventUtil.addHandler(window,'resize',function(){
        alert('Resized');
    })

    关于何时触发resize事件,不同的浏览器不同的机制,IE,Safari,Chrome和Opera会在浏览器窗口变化了1px就会触发resize事件,然后随着变化不断重复被触发。FireFox则只会在用户停止调整窗口大小时才会触发resize事件。由于这个差别,应该注意不要在这个事件的处理程序中加入大计算量的代码,因为这些代码有可能被频繁执行,从而导致浏览器反应明显变慢。

    4、scroll事件

    EventUtil.addHandler(window,'scroll',function(event){
        if(document.compatMode == 'CSS1Compat'){
            alert(document.documentElement.scrollTop);
        }else{
            alert(document.body.scrollTop);
        }
    })

    在标准模式下,除Safari之外的所有浏览器都会通过元素来反映这一变化(Safari仍然基于body跟踪滚动位置),以上代码根据模式不同而用了不同当元素,由于safari之前的版本不支持document.compatMode,因此旧版本的浏览器就会满足第二个条件。
    与resize类似,scroll事件也会在文档滚动期间重复被触发,所以有必要尽量保持事件处理程序的代码简单

  • 相关阅读:
    LightOj 1027 A Dangerous Maze
    hdu 4738 Caocao's Bridges(割边)
    数论模板
    Codeforces Round #316 (Div. 2) D. Tree Requests(dsu)
    Educational Codeforces Round 2 E. Lomsat gelral(dsu)
    qa问答机器人pysparnn问题的召回
    pysparnn 模块使用,相似句子召回
    pytorch seq2seq闲聊机器人beam search返回结果
    pytorch seq2seq闲聊机器人加入attention机制
    python 中自带的堆模块heapq
  • 原文地址:https://www.cnblogs.com/wzndkj/p/7966815.html
Copyright © 2011-2022 走看看