forked from github/dataease
61 lines
1.3 KiB
JavaScript
61 lines
1.3 KiB
JavaScript
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
|
|
}
|
|
}
|