zhangxiao
2024-08-20 e47b788ff5f5c699c682999c95da17eb284ca21d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import { isFunction } from "./fns";
 
// 将选择器与父元素匹配
export function matchesSelectorToParentElements(el, selector, baseNode) {
    let node = el;
 
    const matchesSelectorFunc = [
        "matches",
        "webkitMatchesSelector",
        "mozMatchesSelector",
        "msMatchesSelector",
        "oMatchesSelector"
    ].find((func) => isFunction(node[func]));
 
    if (!isFunction(node[matchesSelectorFunc])) return false;
 
    do {
        if (node[matchesSelectorFunc](selector)) return true;
        if (node === baseNode) return false;
        node = node.parentNode;
    } while (node);
 
    return false;
}
 
export function getComputedSize($el) {
    const style = window.getComputedStyle($el);
 
    return [parseFloat(style.getPropertyValue("width"), 10), parseFloat(style.getPropertyValue("height"), 10)];
}
// 添加事件
export function addEvent(el, event, handler) {
    if (!el) {
        return;
    }
    if (el.attachEvent) {
        el.attachEvent("on" + event, handler);
    } else if (el.addEventListener) {
        el.addEventListener(event, handler, true);
    } else {
        el["on" + event] = handler;
    }
}
 
// 删除事件
export function removeEvent(el, event, handler) {
    if (!el) {
        return;
    }
    if (el.detachEvent) {
        el.detachEvent("on" + event, handler);
    } else if (el.removeEventListener) {
        el.removeEventListener(event, handler, true);
    } else {
        el["on" + event] = null;
    }
}