• 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;
        }
    }
    
  • 相关阅读:
    【Python 基础】For 循环的小例子
    Windows下部署Flask的Web服务
    Windows7 使用docker toolbox安装docker
    Docker容器中文乱码(修改docker容器编码格式
    docker windows 相关操作
    Flask Post 获取json数据,小文件实例
    python pyodbc mssql
    为什么未来10到20年,居家养老是蓝海产业
    Amazon的PRFAQ
    php数组排列组合(递归形式),可用于服装等商品规格的排列组合
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4480522.html
Copyright © 2020-2023  润新知