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
|
}
|
}
|