zoukankan      html  css  js  c++  java
  • no-jquery 04 Events

    Events

    Sending Native (DOM) Events

    anchorElement.click();
    

    Sending Custom Events

    var event = document.createEvent('Event');
    event.initEvent('my-custom-event', true, true); //can bubble, and is cancellable
    someElement.dispatchEvent(event);
    
    //modern; not IE
    var event = new CustomEvent('my-custom-event', {bubbles: true, cancelable: true});
    someElement.dispatchEvent(event);
    

    Listening For Events

    //above IE8
    someElement.addEventListener('click', function() {
        // TODO event handler logic
    });
    
    

    Removing Event Handlers

    var myEventHandler = function(event) {
        // handles the event...
    }
    
    someElement.removeEventListener('click', myEventHandler);
    

    Modifying Events

    someEl.addEventListener('some-event', function(event) {
        event.stopPropagation();
    });
    
    //also prevent other handlers from executing.
    someEl.addEventListener('some-event', function(event) {
        event.stopImmediatePropagation();
    });
    
    someAnchor.addEventListener('click', function(event) {
        event.preventDefault();
    });
    

    Event Delegation

    document.getElementById('my-list').addEventListener('click', function(event) {
        var clickedEl = event.target;
        if(clickedEl.tagName === 'BUTTON') {
           var listItem = clickedEl.parentNode;
           listItem.parentNode.removeChild(listItem);
        }
    });
    

    Keyboard Events

    document.addEventListener('keydown', function(event) {
        if (event.ctrlKey && event.which === 72) {
            // open help widget
        }
    });
    //or
    someElement.addEventListener('keypress', function(event) {
        // ...
    });
    
    someElement.addEventListener('keyup', function(event) {
        // ...
    });
    
    

    Mouse Events

    someEl.addEventListener('mouseover', function() {
        // mouse is hovering over this element
    });
    
    someEl.addEventListener('mouseout', function() {
        // mouse was hovering over this element, but no longer is
    });
    

    Browser Load Events

    window.addEventListener('load', function() {
        // page is fully rendered
    });
    
    document.addEventListener('DOMContentLoaded', function() {
        // markup is on the page
    });
    
    //<img>, <link>, and <script>.
    
    
    img.addEventListener('load', function() {
        // image has successfully loaded
    });
    //And if the image should fail to load?
    
    img.addEventListener('error', function() {
        // image has failed to load
    });
    

    Ancient Browser Support

    Listening For Events

    someElement.attachEvent('onclick', function() {
        // TODO event handler logic
    });
    
    //complex
    function registerHandler(target, type, callback) {
        var listenerMethod = target.addEventListener || target.attachEvent,
            eventName = target.addEventListener ? type : 'on' + type;
    
        listenerMethod(eventName, callback);
    }
    
    // example use
    registerHandler(someElement, 'click', function() {
        // TODO event handler logic
    });
    
    function unregisterHandler(target, type, callback) {
        var removeMethod = target.removeEventListener || target.detachEvent,
            eventName = target.removeEventListener ? type : 'on' + type;
    
        removeMethod(eventName, callback);
    }
    
    // example use
    unregisterHandler(someElement, 'click', someEventHandlerFunction);
    
    

    The Event Object

    function myEventHandler(event) {
        var target = event.target || event.srcElement
    
        // handle event & target
    }
    
    function myEventHandler(event) {
        if (event.stopPropgation) {
            event.stopPropagation();
        }
        else {
            event.cancelBubble = true;
        }
    }
    
  • 相关阅读:
    word 快捷键
    java中的各种修饰符作用范围
    pinyin4j的基本使用
    022-pinyin4j工具类模板
    测开之路一百四十五:SQLAlchemy与后台模板整合之新增、查询、删除
    测开之路一百四十四:ORM之SQLAlchemy查询
    测开之路一百四十三:ORM框架之SQLAlchemy模型及表创建
    测开之路一百四十二:ORM框架之SQLAlchemy建库、建表、数据库操作
    测开之路一百四十一:蓝图实现程序模块化
    测开之路一百四十:可拔插视图(基于类、基于方法)
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4480522.html
Copyright © 2011-2022 走看看