Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UserEventsChecker 检测工具 #105

Open
xgqfrms opened this issue Mar 26, 2021 · 1 comment
Open

UserEventsChecker 检测工具 #105

xgqfrms opened this issue Mar 26, 2021 · 1 comment

Comments

@xgqfrms
Copy link
Owner

xgqfrms commented Mar 26, 2021

UserEventsChecker 检测工具

/**
 * @description UserEventsChecker 检测工具
 * @author xgqfrms
 * @class UserEventsChecker
 * @created 2021.03.26
 * @modified 2021.03.26
 */
class UserEventsChecker {
    constructor (name = '', callback = () => '') {
        // init
        this.name = name?.toLocaleLowerCase() ?? 'default name';
        this.init(callback);
    }
    init (callback) {
        // this.keyboardEvents(callback);
        // this.mouseEvents(callback);
        // this.pointerEvents(callback);
    }
    static autoGetKeys (e = {}) {
        const {
            altKey,
            ctrlKey,
            metaKey,
            shiftKey,
            type,
            code,
            charCode,
            key,
            keyCode,
            which,
        } = e ?? {};
        // 🚀 通过 ES6 解构获取 prototype 上隐藏的 keys
        return {
            altKey,
            ctrlKey,
            metaKey,
            shiftKey,
            type,
            code,
            charCode,
            key,
            keyCode,
            which,
        };
    }
    keyboardEvents (callback = () => '') {
        // keyboard events: down, up, press
        document.addEventListener('keydown', (e) => {
            // console.log('keydown e', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('keyup', (e) => {
            // console.log('keyup e', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('keypress', (e) => {
            // console.log('keypress e', e);
            callback(AutoGetKeys(e))
        });
    }
    mouseEvents (callback = () => '') {
        // mouse events: click, dblclick, mouseup, mousedown, mousemove
        document.addEventListener('click', (e) => {
            // console.log('mouse click e', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('dblclick', (e) => {
            // console.log('mouse dblclick e', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('mouseup', (e) => {
            // console.log('mouse up e', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('mousedown', (e) => {
            // console.log('mouse down e', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('mousemove', (e) => {
            // console.log('mouse move e', e);
            callback(AutoGetKeys(e))
        });
    }
    pointerEvents (callback = () => '') {
        // pointer events: down, up, move, over, out, enter, and leave
        document.addEventListener('pointerdown', (e) => {
            // console.log('pointer down', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('pointerup', (e) => {
            // console.log('pointer up', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('pointermove', (e) => {
            // console.log('pointer move', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('pointerover', (e) => {
            // console.log('pointer over', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('pointerout', (e) => {
            // console.log('pointer out', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('pointerenter', (e) => {
            // console.log('pointer enter', e);
            callback(AutoGetKeys(e))
        });
        document.addEventListener('pointerleave', (e) => {
            // console.log('pointer leave', e);
            callback(AutoGetKeys(e))
        });
    }
}

/**
 *
 * @e events
 */
const AutoGetKeys = (e = {}) => {
    const {
        altKey,
        ctrlKey,
        metaKey,
        shiftKey,
        type,
        code,
        charCode,
        key,
        keyCode,
        which,
    } = e;
    // 🚀 通过 ES6 解构获取 prototype 上隐藏的 keys
    return {
        altKey,
        ctrlKey,
        metaKey,
        shiftKey,
        type,
        code,
        charCode,
        key,
        keyCode,
        which,
    };
};


export {
    // UserEventsChecker,
    AutoGetKeys,
};

export default UserEventsChecker;
@xgqfrms
Copy link
Owner Author

xgqfrms commented Mar 26, 2021

GitHub/cnblogs/test-notes/test.html

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant