@whitesev/domutils 1.5.2 → 1.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.amd.js +9 -6
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +9 -6
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +9 -6
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +9 -6
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +9 -6
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +9 -6
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/DOMUtils.ts +5 -2
- package/src/DOMUtilsEvent.ts +9 -6
package/dist/index.system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.system.js","sources":["../src/WindowApi.ts","../src/DOMUtilsCommonUtils.ts","../src/DOMUtilsData.ts","../src/DOMUtilsOriginPrototype.ts","../src/DOMUtilsEvent.ts","../src/DOMUtils.ts"],"sourcesContent":["export class WindowApi {\n /** 默认的配置 */\n defaultApi = {\n document: document,\n window: window,\n globalThis: globalThis,\n self: self,\n top: top,\n };\n /** 使用的配置 */\n api;\n constructor(option) {\n if (option) {\n if (option.globalThis == null) {\n option.globalThis = option.window;\n }\n if (option.self == null) {\n option.self = option.window;\n }\n }\n if (!option) {\n option = Object.assign({}, this.defaultApi);\n }\n // @ts-ignore\n this.api = Object.assign({}, option);\n }\n get document() {\n return this.api.document;\n }\n get window() {\n return this.api.window;\n }\n get globalThis() {\n return this.api.globalThis;\n }\n get self() {\n return this.api.self;\n }\n get top() {\n return this.api.top;\n }\n}\n","import { WindowApi } from \"./WindowApi\";\n/** 通用工具类 */\nconst DOMUtilsCommonUtils = {\n windowApi: new WindowApi({\n document: document,\n window: window,\n top: top,\n }),\n /**\n * 判断元素是否已显示或已连接\n * @param element\n */\n isShow(element) {\n return Boolean(element.getClientRects().length);\n },\n /**\n * 获取安全的html\n */\n getSafeHTML(text) {\n // @ts-ignore\n if (globalThis.trustedTypes) {\n // @ts-ignore\n const policy = globalThis.trustedTypes.createPolicy(\"safe-innerHTML\", {\n createHTML: (html) => html,\n });\n return policy.createHTML(text);\n }\n else {\n return text;\n }\n },\n /**\n * 在CSP策略下设置innerHTML\n * @param $el 元素\n * @param text 文本\n */\n setSafeHTML($el, text) {\n // 创建 TrustedHTML 策略(需 CSP 允许)\n $el.innerHTML = this.getSafeHTML(text);\n },\n /**\n * 用于显示元素并获取它的高度宽度等其它属性\n * @param element\n */\n showElement(element) {\n let dupNode = element.cloneNode(true);\n dupNode.setAttribute(\"style\", \"visibility: hidden !important;display:block !important;\");\n this.windowApi.document.documentElement.appendChild(dupNode);\n return {\n /**\n * 恢复修改的style\n */\n recovery() {\n dupNode.remove();\n },\n };\n },\n /**\n * 获取元素上的Float格式的属性px\n * @param element\n * @param styleName style名\n */\n getStyleValue(element, styleName) {\n let view = null;\n let styles = null;\n if (element instanceof CSSStyleDeclaration) {\n /* 直接就获取了style属性 */\n styles = element;\n }\n else {\n view = element.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n styles = view.getComputedStyle(element);\n }\n let value = parseFloat(styles[styleName]);\n if (isNaN(value)) {\n return 0;\n }\n else {\n return value;\n }\n },\n /**\n * 判断是否是window,例如window、self、globalThis\n * @param target\n */\n isWin(target) {\n if (typeof target !== \"object\") {\n return false;\n }\n if (target instanceof Node) {\n return false;\n }\n if (target === globalThis) {\n return true;\n }\n if (target === window) {\n return true;\n }\n if (target === self) {\n return true;\n }\n if (target === globalThis) {\n return true;\n }\n if (target === window) {\n return true;\n }\n if (target === self) {\n return true;\n }\n if (typeof unsafeWindow !== \"undefined\" && target === unsafeWindow) {\n return true;\n }\n if (target?.Math?.toString() !== \"[object Math]\") {\n return false;\n }\n return true;\n },\n /**\n * 删除对象上的属性\n * @param target\n * @param propName\n */\n delete(target, propName) {\n if (typeof Reflect === \"object\" && Reflect.deleteProperty) {\n Reflect.deleteProperty(target, propName);\n }\n else {\n delete target[propName];\n }\n },\n};\nexport { DOMUtilsCommonUtils };\n","/* 数据 */\nconst DOMUtilsData = {\n /** .on添加在元素存储的事件 */\n SymbolEvents: Symbol(\"events_\" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)),\n};\nexport { DOMUtilsData };\n","const OriginPrototype = {\n Object: {\n defineProperty: Object.defineProperty,\n },\n};\nexport { OriginPrototype };\n","import { isNodeList } from \"./DOMUtils\";\nimport { DOMUtilsCommonUtils } from \"./DOMUtilsCommonUtils\";\nimport { DOMUtilsData } from \"./DOMUtilsData\";\nimport { OriginPrototype } from \"./DOMUtilsOriginPrototype\";\nimport { WindowApi } from \"./WindowApi\";\nexport class DOMUtilsEvent {\n windowApi;\n constructor(windowApiOption) {\n this.windowApi = new WindowApi(windowApiOption);\n }\n on(element, eventType, selector, callback, option) {\n /**\n * 获取option配置\n * @param args\n * @param startIndex\n * @param option\n */\n function getOption(args, startIndex, option) {\n let currentParam = args[startIndex];\n if (typeof currentParam === \"boolean\") {\n option.capture = currentParam;\n if (typeof args[startIndex + 1] === \"boolean\") {\n option.once = args[startIndex + 1];\n }\n if (typeof args[startIndex + 2] === \"boolean\") {\n option.passive = args[startIndex + 2];\n }\n }\n else if (typeof currentParam === \"object\" &&\n (\"capture\" in currentParam ||\n \"once\" in currentParam ||\n \"passive\" in currentParam ||\n \"isComposedPath\" in currentParam)) {\n option.capture = currentParam.capture;\n option.once = currentParam.once;\n option.passive = currentParam.passive;\n option.isComposedPath = currentParam.isComposedPath;\n }\n return option;\n }\n let DOMUtilsContext = this;\n let args = arguments;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n element = element;\n elementList = [...element];\n }\n else {\n elementList.push(element);\n }\n // 事件名\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventTypeList.concat(eventType);\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventTypeList.concat(eventType.split(\" \"));\n }\n // 子元素选择器\n let selectorList = [];\n if (Array.isArray(selector)) {\n selectorList = selectorList.concat(selector);\n }\n else if (typeof selector === \"string\") {\n selectorList.push(selector);\n }\n // 事件回调\n let listenerCallBack = callback;\n // 事件配置\n let listenerOption = {\n capture: false,\n once: false,\n passive: false,\n isComposedPath: false,\n };\n if (typeof selector === \"function\") {\n /* 这是为没有selector的情况 */\n listenerCallBack = selector;\n listenerOption = getOption(args, 3, listenerOption);\n }\n else {\n /* 这是存在selector的情况 */\n listenerOption = getOption(args, 4, listenerOption);\n }\n /**\n * 如果是once,那么删除该监听和元素上的事件和监听\n */\n function checkOptionOnceToRemoveEventListener() {\n if (listenerOption.once) {\n DOMUtilsContext.off(element, eventType, selector, callback, option);\n }\n }\n elementList.forEach((elementItem) => {\n /**\n * 事件回调\n * @param event\n */\n function domUtilsEventCallBack(event) {\n if (selectorList.length) {\n /* 存在子元素选择器 */\n // 这时候的this和target都是子元素选择器的元素\n let eventTarget = listenerOption.isComposedPath\n ? event.composedPath()[0]\n : event.target;\n let totalParent = DOMUtilsCommonUtils.isWin(elementItem)\n ? DOMUtilsContext.windowApi.document.documentElement\n : elementItem;\n let findValue = selectorList.find((selectorItem) => {\n // 判断目标元素是否匹配选择器\n if (eventTarget.matches(selectorItem)) {\n /* 当前目标可以被selector所匹配到 */\n return true;\n }\n /* 在上层与主元素之间寻找可以被selector所匹配到的 */\n let $closestMatches = eventTarget.closest(selectorItem);\n if ($closestMatches && totalParent.contains($closestMatches)) {\n eventTarget = $closestMatches;\n return true;\n }\n return false;\n });\n if (findValue) {\n // 这里尝试使用defineProperty修改event的target值\n try {\n OriginPrototype.Object.defineProperty(event, \"target\", {\n get() {\n return eventTarget;\n },\n });\n }\n catch (error) { }\n listenerCallBack.call(eventTarget, event, eventTarget);\n checkOptionOnceToRemoveEventListener();\n }\n }\n else {\n // 这时候的this指向监听的元素\n listenerCallBack.call(elementItem, event);\n checkOptionOnceToRemoveEventListener();\n }\n }\n /* 遍历事件名设置元素事件 */\n eventTypeList.forEach((eventName) => {\n elementItem.addEventListener(eventName, domUtilsEventCallBack, listenerOption);\n /* 获取对象上的事件 */\n let elementEvents = elementItem[DOMUtilsData.SymbolEvents] || {};\n /* 初始化对象上的xx事件 */\n elementEvents[eventName] = elementEvents[eventName] || [];\n elementEvents[eventName].push({\n selector: selectorList,\n option: listenerOption,\n callback: domUtilsEventCallBack,\n originCallBack: listenerCallBack,\n });\n /* 覆盖事件 */\n // @ts-ignore\n elementItem[DOMUtilsData.SymbolEvents] = elementEvents;\n });\n });\n }\n off(element, eventType, selector, callback, option, filter) {\n /**\n * 获取option配置\n * @param args1\n * @param startIndex\n * @param option\n */\n function getOption(args1, startIndex, option) {\n let currentParam = args1[startIndex];\n if (typeof currentParam === \"boolean\") {\n option.capture = currentParam;\n }\n else if (typeof currentParam === \"object\" &&\n \"capture\" in currentParam) {\n option.capture = currentParam.capture;\n }\n return option;\n }\n let DOMUtilsContext = this;\n let args = arguments;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n element = element;\n elementList = [...element];\n }\n else {\n elementList.push(element);\n }\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventTypeList.concat(eventType);\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventTypeList.concat(eventType.split(\" \"));\n }\n // 子元素选择器\n let selectorList = [];\n if (Array.isArray(selector)) {\n selectorList = selectorList.concat(selector);\n }\n else if (typeof selector === \"string\") {\n selectorList.push(selector);\n }\n /**\n * 事件的回调函数\n */\n let listenerCallBack = callback;\n /**\n * 事件的配置\n */\n let listenerOption = {\n capture: false,\n };\n if (typeof selector === \"function\") {\n /* 这是为没有selector的情况 */\n listenerCallBack = selector;\n listenerOption = getOption(args, 3, listenerOption);\n }\n else {\n listenerOption = getOption(args, 4, listenerOption);\n }\n // 是否移除所有事件\n let isRemoveAll = false;\n if (args.length === 2) {\n // 目标函数、事件名\n isRemoveAll = true;\n }\n else if ((args.length === 3 && typeof args[2] === \"string\") ||\n Array.isArray(args[2])) {\n // 目标函数、事件名、子元素选择器\n isRemoveAll = true;\n }\n elementList.forEach((elementItem) => {\n /* 获取对象上的事件 */\n // @ts-ignore\n let elementEvents = elementItem[DOMUtilsData.SymbolEvents] || {};\n eventTypeList.forEach((eventName) => {\n let handlers = elementEvents[eventName] || [];\n if (typeof filter === \"function\") {\n handlers = handlers.filter(filter);\n }\n for (let index = 0; index < handlers.length; index++) {\n let handler = handlers[index];\n let flag = true;\n if (flag &&\n listenerCallBack &&\n handler.originCallBack !== listenerCallBack) {\n // callback不同\n flag = false;\n }\n if (flag && selectorList.length && Array.isArray(handler.selector)) {\n if (JSON.stringify(handler.selector) !== JSON.stringify(selectorList)) {\n // 子元素选择器不同\n flag = false;\n }\n }\n if (flag && listenerOption.capture !== handler.option.capture) {\n // 事件的配置项不同\n flag = false;\n }\n if (flag || isRemoveAll) {\n elementItem.removeEventListener(eventName, handler.callback, handler.option);\n handlers.splice(index--, 1);\n }\n }\n if (handlers.length === 0) {\n /* 如果没有任意的handler,那么删除该属性 */\n DOMUtilsCommonUtils.delete(elementEvents, eventType);\n }\n });\n // @ts-ignore\n elementItem[DOMUtilsData.SymbolEvents] = elementEvents;\n });\n }\n /**\n * 取消绑定所有的事件\n * @param element 需要取消绑定的元素|元素数组\n * @param eventType (可选)需要取消监听的事件\n */\n offAll(element, eventType) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n elementList = [...element];\n }\n else {\n elementList.push(element);\n }\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventTypeList.concat(eventType);\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventTypeList.concat(eventType.split(\" \"));\n }\n elementList.forEach((elementItem) => {\n Object.getOwnPropertySymbols(elementItem).forEach((symbolEvents) => {\n if (!symbolEvents.toString().startsWith(\"Symbol(events_\")) {\n return;\n }\n let elementEvents = elementItem[symbolEvents] || {};\n let iterEventNameList = eventTypeList.length\n ? eventTypeList\n : Object.keys(elementEvents);\n iterEventNameList.forEach((eventName) => {\n let handlers = elementEvents[eventName];\n if (!handlers) {\n return;\n }\n for (const handler of handlers) {\n elementItem.removeEventListener(eventName, handler.callback, {\n capture: handler[\"option\"][\"capture\"],\n });\n }\n // @ts-ignore\n DOMUtilsCommonUtils.delete(elementItem[symbolEvents], eventName);\n });\n });\n });\n }\n /**\n * 等待文档加载完成后执行指定的函数\n * @param callback 需要执行的函数\n * @example\n * DOMUtils.ready(function(){\n * console.log(\"文档加载完毕\")\n * })\n */\n ready(callback) {\n if (typeof callback !== \"function\") {\n return;\n }\n let DOMUtilsContext = this;\n /**\n * 检测文档是否加载完毕\n */\n function checkDOMReadyState() {\n try {\n if (DOMUtilsContext.windowApi.document.readyState === \"complete\" ||\n (DOMUtilsContext.windowApi.document.readyState !== \"loading\" &&\n !DOMUtilsContext.windowApi.document.documentElement\n .doScroll)) {\n return true;\n }\n else {\n return false;\n }\n }\n catch (error) {\n return false;\n }\n }\n /**\n * 成功加载完毕后触发的回调函数\n */\n function completed() {\n removeDomReadyListener();\n callback();\n }\n let targetList = [\n {\n target: DOMUtilsContext.windowApi.document,\n eventType: \"DOMContentLoaded\",\n callback: completed,\n },\n {\n target: DOMUtilsContext.windowApi.window,\n eventType: \"load\",\n callback: completed,\n },\n ];\n /**\n * 添加监听\n */\n function addDomReadyListener() {\n for (let index = 0; index < targetList.length; index++) {\n let item = targetList[index];\n item.target.addEventListener(item.eventType, item.callback);\n }\n }\n /**\n * 移除监听\n */\n function removeDomReadyListener() {\n for (let index = 0; index < targetList.length; index++) {\n let item = targetList[index];\n item.target.removeEventListener(item.eventType, item.callback);\n }\n }\n if (checkDOMReadyState()) {\n /* 检查document状态 */\n setTimeout(callback);\n }\n else {\n /* 添加监听 */\n addDomReadyListener();\n }\n }\n /**\n * 主动触发事件\n * @param element 需要触发的元素|元素数组|window\n * @param eventType 需要触发的事件\n * @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象\n * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的click事件\n * DOMUtils.trigger(document.querySelector(\"a.xx\"),\"click\")\n * DOMUtils.trigger(\"a.xx\",\"click\")\n * // 触发元素a.xx的click、tap、hover事件\n * DOMUtils.trigger(document.querySelector(\"a.xx\"),\"click tap hover\")\n * DOMUtils.trigger(\"a.xx\",[\"click\",\"tap\",\"hover\"])\n */\n trigger(element, eventType, details, useDispatchToTriggerEvent = true) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n element = element;\n elementList = [...element];\n }\n else {\n elementList = [element];\n }\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventType;\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventType.split(\" \");\n }\n elementList.forEach((elementItem) => {\n /* 获取对象上的事件 */\n let events = elementItem[DOMUtilsData.SymbolEvents] || {};\n eventTypeList.forEach((_eventType_) => {\n let event = null;\n if (details && details instanceof Event) {\n event = details;\n }\n else {\n event = new Event(_eventType_);\n if (details) {\n Object.keys(details).forEach((keyName) => {\n event[keyName] = details[keyName];\n });\n }\n }\n if (useDispatchToTriggerEvent == false && _eventType_ in events) {\n events[_eventType_].forEach((eventsItem) => {\n eventsItem.callback(event);\n });\n }\n else {\n elementItem.dispatchEvent(event);\n }\n });\n });\n }\n /**\n * 绑定或触发元素的click事件\n * @param element 目标元素\n * @param handler (可选)事件处理函数\n * @param details (可选)赋予触发的Event的额外属性\n * @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的click事件\n * DOMUtils.click(document.querySelector(\"a.xx\"))\n * DOMUtils.click(\"a.xx\")\n * DOMUtils.click(\"a.xx\",function(){\n * console.log(\"触发click事件成功\")\n * })\n * */\n click(element, handler, details, useDispatchToTriggerEvent) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.click($ele, handler, details, useDispatchToTriggerEvent);\n });\n return;\n }\n if (handler == null) {\n DOMUtilsContext.trigger(element, \"click\", details, useDispatchToTriggerEvent);\n }\n else {\n DOMUtilsContext.on(element, \"click\", null, handler);\n }\n }\n /**\n * 绑定或触发元素的blur事件\n * @param element 目标元素\n * @param handler (可选)事件处理函数\n * @param details (可选)赋予触发的Event的额外属性\n * @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的blur事件\n * DOMUtils.blur(document.querySelector(\"a.xx\"))\n * DOMUtils.blur(\"a.xx\")\n * DOMUtils.blur(\"a.xx\",function(){\n * console.log(\"触发blur事件成功\")\n * })\n * */\n blur(element, handler, details, useDispatchToTriggerEvent) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);\n });\n return;\n }\n if (handler === null) {\n DOMUtilsContext.trigger(element, \"blur\", details, useDispatchToTriggerEvent);\n }\n else {\n DOMUtilsContext.on(element, \"blur\", null, handler);\n }\n }\n /**\n * 绑定或触发元素的focus事件\n * @param element 目标元素\n * @param handler (可选)事件处理函数\n * @param details (可选)赋予触发的Event的额外属性\n * @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的focus事件\n * DOMUtils.focus(document.querySelector(\"a.xx\"))\n * DOMUtils.focus(\"a.xx\")\n * DOMUtils.focus(\"a.xx\",function(){\n * console.log(\"触发focus事件成功\")\n * })\n * */\n focus(element, handler, details, useDispatchToTriggerEvent) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);\n });\n return;\n }\n if (handler == null) {\n DOMUtilsContext.trigger(element, \"focus\", details, useDispatchToTriggerEvent);\n }\n else {\n DOMUtilsContext.on(element, \"focus\", null, handler);\n }\n }\n /**\n * 当鼠标移入或移出元素时触发事件\n * @param element 当前元素\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的移入或移出\n * DOMUtils.hover(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"移入/移除\");\n * })\n * DOMUtils.hover(\"a.xx\",()=>{\n * console.log(\"移入/移除\");\n * })\n */\n hover(element, handler, option) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.hover($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"mouseenter\", null, handler, option);\n DOMUtilsContext.on(element, \"mouseleave\", null, handler, option);\n }\n /**\n * 当按键松开时触发事件\n * keydown - > keypress - > keyup\n * @param element 当前元素\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的按键松开\n * DOMUtils.keyup(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"按键松开\");\n * })\n * DOMUtils.keyup(\"a.xx\",()=>{\n * console.log(\"按键松开\");\n * })\n */\n keyup(element, handler, option) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.keyup($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"keyup\", null, handler, option);\n }\n /**\n * 当按键按下时触发事件\n * keydown - > keypress - > keyup\n * @param element 目标\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的按键按下\n * DOMUtils.keydown(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"按键按下\");\n * })\n * DOMUtils.keydown(\"a.xx\",()=>{\n * console.log(\"按键按下\");\n * })\n */\n keydown(element, handler, option) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.keydown($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"keydown\", null, handler, option);\n }\n /**\n * 当按键按下时触发事件\n * keydown - > keypress - > keyup\n * @param element 目标\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的按键按下\n * DOMUtils.keypress(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"按键按下\");\n * })\n * DOMUtils.keypress(\"a.xx\",()=>{\n * console.log(\"按键按下\");\n * })\n */\n keypress(element, handler, option) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.keypress($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"keypress\", null, handler, option);\n }\n /**\n * 监听某个元素键盘按键事件或window全局按键事件\n * 按下有值的键时触发,按下Ctrl\\Alt\\Shift\\Meta是无值键。按下先触发keydown事件,再触发keypress事件。\n * @param element 需要监听的对象,可以是全局Window或者某个元素\n * @param eventName 事件名,默认keypress\n * @param callback 自己定义的回调事件,参数1为当前的key,参数2为组合按键,数组类型,包含ctrl、shift、alt和meta(win键或mac的cmd键)\n * @param options 监听事件的配置\n * @example\n Utils.listenKeyboard(window,(keyName,keyValue,otherKey,event)=>{\n if(keyName === \"Enter\"){\n console.log(\"回车按键的值是:\"+keyValue)\n }\n if(otherKey.indexOf(\"ctrl\") && keyName === \"Enter\" ){\n console.log(\"Ctrl和回车键\");\n }\n })\n * @example\n 字母和数字键的键码值(keyCode)\n 按键\t键码\t按键\t键码\t按键\t键码\t按键\t键码\n A\t65\tJ\t74\tS\t83\t1\t49\n B\t66\tK\t75\tT\t84\t2\t50\n C\t67\tL\t76\tU\t85\t3\t51\n D\t68\tM\t77\tV\t86\t4\t52\n E\t69\tN\t78\tW\t87\t5\t53\n F\t70\tO\t79\tX\t88\t6\t54\n G\t71\tP\t80\tY\t89\t7\t55\n H\t72\tQ\t81\tZ\t90\t8\t56\n I\t73\tR\t82\t0\t48\t9\t57\n \n 数字键盘上的键的键码值(keyCode)\n 功能键键码值(keyCode)\n 按键\t键码\t按键 \t键码\t按键\t键码\t按键\t键码\n 0\t96\t8\t104\tF1\t112\tF7\t118\n 1\t97\t9\t105\tF2\t113\tF8\t119\n 2\t98\t*\t106\tF3\t114\tF9\t120\n 3\t99\t+\t107\tF4\t115\tF10\t121\n 4\t100\tEnter\t108\tF5\t116\tF11\t122\n 5\t101\t-\t109\tF6\t117\tF12\t123\n 6\t102\t.\t110\n 7\t103\t/\t111\n \n 控制键键码值(keyCode)\n 按键\t\t键码\t按键\t\t键码\t按键\t\t键码\t按键\t\t键码\n BackSpace\t8\tEsc\t\t27\t→\t\t39\t-_\t\t189\n Tab\t\t9\tSpacebar\t32\t↓\t\t40\t.>\t\t190\n Clear\t\t12\tPage Up\t\t33\tInsert\t\t45\t/?\t\t191\n Enter\t\t13\tPage Down\t34\tDelete\t\t46\t`~\t\t192\n Shift\t\t16\tEnd\t\t35\tNum Lock\t144\t[{\t\t219\n Control\t\t17\tHome\t\t36\t;:\t\t186\t\\|\t\t220\n Alt\t\t18\t←\t\t37\t=+\t\t187\t]}\t\t221\n Cape Lock\t20\t↑\t\t38\t,<\t\t188\t'\"\t\t222\n \n 多媒体键码值(keyCode)\n 按键\t\t键码\n 音量加\t\t175\n 音量减\t\t174\n 停止\t\t179\n 静音\t\t173\n 浏览器\t\t172\n 邮件\t\t180\n 搜索\t\t170\n 收藏\t\t171\n **/\n listenKeyboard(element, eventName = \"keypress\", callback, options) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n let keyboardEventCallBack = function (event) {\n /** 键名 */\n let keyName = event.key || event.code;\n /** 键值 */\n let keyValue = event.charCode || event.keyCode || event.which;\n /** 组合键列表 */\n let otherCodeList = [];\n if (event.ctrlKey) {\n otherCodeList.push(\"ctrl\");\n }\n if (event.altKey) {\n otherCodeList.push(\"alt\");\n }\n if (event.metaKey) {\n otherCodeList.push(\"meta\");\n }\n if (event.shiftKey) {\n otherCodeList.push(\"shift\");\n }\n if (typeof callback === \"function\") {\n callback(keyName, keyValue, otherCodeList, event);\n }\n };\n DOMUtilsContext.on(element, eventName, keyboardEventCallBack, options);\n return {\n removeListen: () => {\n DOMUtilsContext.off(element, eventName, keyboardEventCallBack, options);\n },\n };\n }\n selector(selector) {\n return this.selectorAll(selector)[0];\n }\n selectorAll(selector) {\n const context = this;\n selector = selector.trim();\n if (selector.match(/[^\\s]{1}:empty$/gi)) {\n // empty 语法\n selector = selector.replace(/:empty$/gi, \"\");\n return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {\n return $ele?.innerHTML?.trim() === \"\";\n });\n }\n else if (selector.match(/[^\\s]{1}:contains\\(\"(.*)\"\\)$/i) ||\n selector.match(/[^\\s]{1}:contains\\('(.*)'\\)$/i)) {\n // contains 语法\n let textMatch = selector.match(/:contains\\((\"|')(.*)(\"|')\\)$/i);\n let text = textMatch[2];\n selector = selector.replace(/:contains\\((\"|')(.*)(\"|')\\)$/gi, \"\");\n return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {\n // @ts-ignore\n return ($ele?.textContent || $ele?.innerText)?.includes(text);\n });\n }\n else if (selector.match(/[^\\s]{1}:regexp\\(\"(.*)\"\\)$/i) ||\n selector.match(/[^\\s]{1}:regexp\\('(.*)'\\)$/i)) {\n // regexp 语法\n let textMatch = selector.match(/:regexp\\((\"|')(.*)(\"|')\\)$/i);\n let pattern = textMatch[2];\n let flagMatch = pattern.match(/(\"|'),[\\s]*(\"|')([igm]{0,3})$/i);\n let flags = \"\";\n if (flagMatch) {\n pattern = pattern.replace(/(\"|'),[\\s]*(\"|')([igm]{0,3})$/gi, \"\");\n flags = flagMatch[3];\n }\n let regexp = new RegExp(pattern, flags);\n selector = selector.replace(/:regexp\\((\"|')(.*)(\"|')\\)$/gi, \"\");\n return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {\n // @ts-ignore\n return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));\n });\n }\n else {\n // 普通语法\n return Array.from(context.windowApi.document.querySelectorAll(selector));\n }\n }\n}\n","import { DOMUtilsCommonUtils } from \"./DOMUtilsCommonUtils\";\nimport { DOMUtilsEvent } from \"./DOMUtilsEvent\";\n/**\n * 判断是否是元素列表\n * @param $ele\n */\nexport const isNodeList = ($ele) => {\n return Array.isArray($ele) || $ele instanceof NodeList;\n};\nclass DOMUtils extends DOMUtilsEvent {\n constructor(option) {\n super(option);\n }\n /** 版本号 */\n version = \"2025.4.8\";\n attr(element, attrName, attrValue) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (attrValue == null) {\n // 获取属性\n return DOMUtilsContext.attr(element[0], attrName, attrValue);\n }\n else {\n // 设置属性\n element.forEach(($ele) => {\n DOMUtilsContext.attr($ele, attrName, attrValue);\n });\n return;\n }\n }\n if (attrValue == null) {\n return element.getAttribute(attrName);\n }\n else {\n element.setAttribute(attrName, attrValue);\n }\n }\n /**\n * 创建元素\n * @param tagName 标签名\n * @param property 属性\n * @param attributes 元素上的自定义属性\n * @example\n * // 创建一个DIV元素,且属性class为xxx\n * DOMUtils.createElement(\"div\",undefined,{ class:\"xxx\" });\n * > <div class=\"xxx\"></div>\n * @example\n * // 创建一个DIV元素\n * DOMUtils.createElement(\"div\");\n * > <div></div>\n * @example\n * // 创建一个DIV元素\n * DOMUtils.createElement(\"div\",\"测试\");\n * > <div>测试</div>\n */\n createElement(\n /** 元素名 */\n tagName, \n /** 属性 */\n property, \n /** 自定义属性 */\n attributes) {\n let DOMUtilsContext = this;\n let tempElement = DOMUtilsContext.windowApi.document.createElement(tagName);\n if (typeof property === \"string\") {\n DOMUtilsContext.html(tempElement, property);\n return tempElement;\n }\n if (property == null) {\n property = {};\n }\n if (attributes == null) {\n attributes = {};\n }\n Object.keys(property).forEach((key) => {\n let value = property[key];\n if (key === \"innerHTML\") {\n DOMUtilsContext.html(tempElement, value);\n return;\n }\n tempElement[key] = value;\n });\n Object.keys(attributes).forEach((key) => {\n let value = attributes[key];\n if (typeof value === \"object\") {\n /* object转字符串 */\n value = JSON.stringify(value);\n }\n else if (typeof value === \"function\") {\n /* function转字符串 */\n value = value.toString();\n }\n tempElement.setAttribute(key, value);\n });\n return tempElement;\n }\n css(element, property, value) {\n let DOMUtilsContext = this;\n /**\n * 把纯数字没有px的加上\n */\n function handlePixe(propertyName, propertyValue) {\n let allowAddPixe = [\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"font-size\",\n ];\n if (typeof propertyValue === \"number\") {\n propertyValue = propertyValue.toString();\n }\n if (typeof propertyValue === \"string\" &&\n allowAddPixe.includes(propertyName) &&\n propertyValue.match(/[0-9]$/gi)) {\n propertyValue = propertyValue + \"px\";\n }\n return propertyValue;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (typeof property === \"string\") {\n if (value == null) {\n // 获取属性\n return DOMUtilsContext.css(element[0], property);\n }\n else {\n // 设置属性\n element.forEach(($ele) => {\n DOMUtilsContext.css($ele, property);\n });\n return;\n }\n }\n else if (typeof property === \"object\") {\n // 设置属性\n element.forEach(($ele) => {\n DOMUtilsContext.css($ele, property);\n });\n return;\n }\n else {\n }\n return;\n }\n let setStyleProperty = (propertyName, propertyValue) => {\n if (propertyValue === \"string\" && propertyValue.includes(\"!important\")) {\n propertyValue = propertyValue\n .trim()\n .replace(/!important$/gi, \"\")\n .trim();\n element.style.setProperty(propertyName, propertyValue, \"important\");\n }\n else {\n propertyValue = handlePixe(propertyName, propertyValue);\n element.style.setProperty(propertyName, propertyValue);\n }\n };\n if (typeof property === \"string\") {\n if (value == null) {\n return DOMUtilsContext.windowApi.globalThis\n .getComputedStyle(element)\n .getPropertyValue(property);\n }\n else {\n setStyleProperty(property, value);\n }\n }\n else if (typeof property === \"object\") {\n for (let prop in property) {\n let value = property[prop];\n setStyleProperty(prop, value);\n }\n }\n else {\n // 其他情况\n throw new TypeError(\"property must be string or object\");\n }\n }\n text(element, text) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (text == null) {\n // 获取\n return DOMUtilsContext.text(element[0]);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.text($ele, text);\n });\n }\n return;\n }\n if (text == null) {\n return element.textContent || element.innerText;\n }\n else {\n if (text instanceof Node) {\n text = text.textContent || text.innerText;\n }\n if (\"textContent\" in element) {\n element.textContent = text;\n }\n else if (\"innerText\" in element) {\n element.innerText = text;\n }\n }\n }\n html(element, html) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (html == null) {\n // 获取\n return DOMUtilsContext.html(element[0]);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.html($ele, html);\n });\n }\n return;\n }\n if (html == null) {\n // 获取\n return element.innerHTML;\n }\n else {\n // 设置\n if (html instanceof Element) {\n html = html.innerHTML;\n }\n if (\"innerHTML\" in element) {\n DOMUtilsCommonUtils.setSafeHTML(element, html);\n }\n }\n }\n /**\n * 获取移动元素的transform偏移\n */\n getTransform(element, isShow = false) {\n let DOMUtilsContext = this;\n let transform_left = 0;\n let transform_top = 0;\n if (!(isShow || (!isShow && DOMUtilsCommonUtils.isShow(element)))) {\n /* 未显示 */\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let transformInfo = DOMUtilsContext.getTransform(element, true);\n recovery();\n return transformInfo;\n }\n let elementTransform = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element).transform;\n if (elementTransform != null &&\n elementTransform !== \"none\" &&\n elementTransform !== \"\") {\n let elementTransformSplit = elementTransform\n .match(/\\((.+)\\)/)?.[1]\n .split(\",\");\n if (elementTransformSplit) {\n transform_left = Math.abs(parseInt(elementTransformSplit[4]));\n transform_top = Math.abs(parseInt(elementTransformSplit[5]));\n }\n else {\n transform_left = 0;\n transform_top = 0;\n }\n }\n return {\n transformLeft: transform_left,\n transformTop: transform_top,\n };\n }\n val(element, value) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (value == null) {\n // 获取\n return DOMUtilsContext.val(element[0]);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.val($ele, value);\n });\n }\n return;\n }\n if (value == null) {\n // 获取\n if (element.localName === \"input\" &&\n (element.type === \"checkbox\" || element.type === \"radio\")) {\n return element.checked;\n }\n else {\n return element.value;\n }\n }\n else {\n // 设置\n if (element.localName === \"input\" &&\n (element.type === \"checkbox\" || element.type === \"radio\")) {\n element.checked = !!value;\n }\n else {\n element.value = value;\n }\n }\n }\n prop(element, propName, propValue) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (propValue == null) {\n // 获取\n return DOMUtilsContext.prop(element[0], propName);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.prop($ele, propName, propValue);\n });\n }\n return;\n }\n if (propValue == null) {\n return Reflect.get(element, propName);\n }\n else {\n if (element instanceof Element && propName === \"innerHTML\") {\n DOMUtilsContext.html(element, propValue);\n }\n else {\n Reflect.set(element, propName, propValue);\n }\n }\n }\n /**\n * 移除元素的属性\n * @param element 目标元素\n * @param attrName 属性名\n * @example\n * // 移除元素a.xx的属性data-value\n * DOMUtils.removeAttr(document.querySelector(\"a.xx\"),\"data-value\")\n * DOMUtils.removeAttr(\"a.xx\",\"data-value\")\n * */\n removeAttr(element, attrName) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.removeAttr($ele, attrName);\n });\n return;\n }\n element.removeAttribute(attrName);\n }\n /**\n * 移除元素class名\n * @param element 目标元素\n * @param className 类名\n * @example\n * // 移除元素a.xx的className为xx\n * DOMUtils.removeClass(document.querySelector(\"a.xx\"),\"xx\")\n * DOMUtils.removeClass(\"a.xx\",\"xx\")\n */\n removeClass(element, className) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.removeClass($ele, className);\n });\n return;\n }\n if (className == null) {\n // 清空全部className\n element.className = \"\";\n }\n else {\n if (!Array.isArray(className)) {\n className = className.split(\" \");\n }\n className.forEach((itemClassName) => {\n element.classList.remove(itemClassName);\n });\n }\n }\n /**\n * 移除元素的属性\n * @param element 目标元素\n * @param propName 属性名\n * @example\n * // 移除元素a.xx的href属性\n * DOMUtils.removeProp(document.querySelector(\"a.xx\"),\"href\")\n * DOMUtils.removeProp(\"a.xx\",\"href\")\n * */\n removeProp(element, propName) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.removeProp($ele, propName);\n });\n return;\n }\n DOMUtilsCommonUtils.delete(element, propName);\n }\n /**\n * 将一个元素替换为另一个元素\n * @param element 目标元素\n * @param newElement 新元素\n * @example\n * // 替换元素a.xx为b.xx\n * DOMUtils.replaceWith(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.replaceWith(\"a.xx\",'<b class=\"xx\"></b>')\n */\n replaceWith(element, newElement) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.replaceWith($ele, newElement);\n });\n return;\n }\n if (typeof newElement === \"string\") {\n newElement = DOMUtilsContext.parseHTML(newElement, false, false);\n }\n element.parentElement.replaceChild(newElement, element);\n }\n /**\n * 给元素添加class\n * @param element 目标元素\n * @param className class名\n * @example\n * // 元素a.xx的className添加_vue_\n * DOMUtils.addClass(document.querySelector(\"a.xx\"),\"_vue_\")\n * DOMUtils.addClass(\"a.xx\",\"_vue_\")\n * */\n addClass(element, className) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.addClass($ele, className);\n });\n return;\n }\n if (!Array.isArray(className)) {\n className = className.split(\" \");\n }\n className.forEach((itemClassName) => {\n if (itemClassName.trim() == \"\") {\n return;\n }\n element.classList.add(itemClassName);\n });\n }\n /**\n * 判断元素是否存在className\n * @param element\n * @param className\n */\n hasClass(element, className) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return false;\n }\n if (isNodeList(element)) {\n let flag = true;\n for (let index = 0; index < element.length; index++) {\n const $ele = element[index];\n flag = flag && DOMUtilsContext.hasClass($ele, className);\n }\n return flag;\n }\n if (!element?.classList) {\n return false;\n }\n if (!Array.isArray(className)) {\n className = className.split(\" \");\n }\n for (let index = 0; index < className.length; index++) {\n const item = className[index].trim();\n if (!element.classList.contains(item)) {\n return false;\n }\n }\n return true;\n }\n /**\n * 函数在元素内部末尾添加子元素或HTML字符串\n * @param element 目标元素\n * @param content 子元素或HTML字符串\n * @example\n * // 元素a.xx的内部末尾添加一个元素\n * DOMUtils.append(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.append(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n append(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.append($ele, content);\n });\n return;\n }\n function elementAppendChild(ele, text) {\n if (typeof content === \"string\") {\n ele.insertAdjacentHTML(\"beforeend\", DOMUtilsCommonUtils.getSafeHTML(text));\n }\n else {\n ele.appendChild(text);\n }\n }\n if (Array.isArray(content) || content instanceof NodeList) {\n /* 数组 */\n let fragment = DOMUtilsContext.windowApi.document.createDocumentFragment();\n content.forEach((ele) => {\n if (typeof ele === \"string\") {\n ele = DOMUtilsContext.parseHTML(ele, true, false);\n }\n fragment.appendChild(ele);\n });\n element.appendChild(fragment);\n }\n else {\n elementAppendChild(element, content);\n }\n }\n /**\n * 函数 在元素内部开头添加子元素或HTML字符串\n * @param element 目标元素\n * @param content 子元素或HTML字符串\n * @example\n * // 元素a.xx内部开头添加一个元素\n * DOMUtils.prepend(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.prepend(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n prepend(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.prepend($ele, content);\n });\n return;\n }\n if (typeof content === \"string\") {\n element.insertAdjacentHTML(\"afterbegin\", DOMUtilsCommonUtils.getSafeHTML(content));\n }\n else {\n let $firstChild = element.firstChild;\n if ($firstChild == null) {\n element.prepend(content);\n }\n else {\n element.insertBefore(content, element.firstChild);\n }\n }\n }\n /**\n * 在元素后面添加兄弟元素或HTML字符串\n * @param element 目标元素\n * @param content 兄弟元素或HTML字符串\n * @example\n * // 元素a.xx后面添加一个元素\n * DOMUtils.after(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.after(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n after(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.after($ele, content);\n });\n return;\n }\n if (typeof content === \"string\") {\n element.insertAdjacentHTML(\"afterend\", DOMUtilsCommonUtils.getSafeHTML(content));\n }\n else {\n let $parent = element.parentElement;\n let $nextSlibling = element.nextSibling;\n if (!$parent || $nextSlibling) {\n // 任意一个不行\n element.after(content);\n }\n else {\n element.parentElement.insertBefore(content, element.nextSibling);\n }\n }\n }\n /**\n * 在元素前面添加兄弟元素或HTML字符串\n * @param element 目标元素\n * @param content 兄弟元素或HTML字符串\n * @example\n * // 元素a.xx前面添加一个元素\n * DOMUtils.before(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.before(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n before(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.before($ele, content);\n });\n return;\n }\n if (typeof content === \"string\") {\n element.insertAdjacentHTML(\"beforebegin\", DOMUtilsCommonUtils.getSafeHTML(content));\n }\n else {\n let $parent = element.parentElement;\n if (!$parent) {\n element.before(content);\n }\n else {\n $parent.insertBefore(content, element);\n }\n }\n }\n /**\n * 移除元素\n * @param element 目标元素\n * @example\n * // 元素a.xx前面添加一个元素\n * DOMUtils.remove(document.querySelector(\"a.xx\"))\n * DOMUtils.remove(document.querySelectorAll(\"a.xx\"))\n * DOMUtils.remove(\"a.xx\")\n * */\n remove(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n element.forEach(($ele) => {\n DOMUtilsContext.remove($ele);\n });\n return;\n }\n element.remove();\n }\n /**\n * 移除元素的所有子元素\n * @param element 目标元素\n * @example\n * // 移除元素a.xx元素的所有子元素\n * DOMUtils.empty(document.querySelector(\"a.xx\"))\n * DOMUtils.empty(\"a.xx\")\n * */\n empty(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.empty($ele);\n });\n return;\n }\n DOMUtilsContext.html(element, \"\");\n }\n /**\n * 获取元素相对于文档的偏移坐标(加上文档的滚动条)\n * @param element 目标元素\n * @example\n * // 获取元素a.xx的对于文档的偏移坐标\n * DOMUtils.offset(document.querySelector(\"a.xx\"))\n * DOMUtils.offset(\"a.xx\")\n * > 0\n */\n offset(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n let rect = element.getBoundingClientRect();\n return {\n /** y轴偏移 */\n top: rect.top + DOMUtilsContext.windowApi.globalThis.scrollY,\n /** x轴偏移 */\n left: rect.left + DOMUtilsContext.windowApi.globalThis.scrollX,\n };\n }\n width(element, isShow = false) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.document.documentElement\n .clientWidth;\n }\n if (element.nodeType === 9) {\n /* Document文档节点 */\n element = element;\n return Math.max(element.body.scrollWidth, element.documentElement.scrollWidth, element.body.offsetWidth, element.documentElement.offsetWidth, element.documentElement.clientWidth);\n }\n if (isShow ||\n (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n /* 已显示 */\n /* 不从style中获取对应的宽度,因为可能使用了class定义了width !important */\n element = element;\n /* 如果element.style.width为空 则从css里面获取是否定义了width信息如果定义了 则读取css里面定义的宽度width */\n if (parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"width\").toString()) > 0) {\n return parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"width\").toString());\n }\n /* 如果从css里获取到的值不是大于0 可能是auto 则通过offsetWidth来进行计算 */\n if (element.offsetWidth > 0) {\n let borderLeftWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderLeftWidth\");\n let borderRightWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderRightWidth\");\n let paddingLeft = DOMUtilsCommonUtils.getStyleValue(element, \"paddingLeft\");\n let paddingRight = DOMUtilsCommonUtils.getStyleValue(element, \"paddingRight\");\n let backHeight = parseFloat(element.offsetWidth.toString()) -\n parseFloat(borderLeftWidth.toString()) -\n parseFloat(borderRightWidth.toString()) -\n parseFloat(paddingLeft.toString()) -\n parseFloat(paddingRight.toString());\n return parseFloat(backHeight.toString());\n }\n return 0;\n }\n else {\n /* 未显示 */\n element = element;\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let width = DOMUtilsContext.width(element, true);\n recovery();\n return width;\n }\n }\n height(element, isShow = false) {\n let DOMUtilsContext = this;\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.document.documentElement\n .clientHeight;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n // @ts-ignore\n return;\n }\n if (element.nodeType === 9) {\n element = element;\n /* Document文档节点 */\n return Math.max(element.body.scrollHeight, element.documentElement.scrollHeight, element.body.offsetHeight, element.documentElement.offsetHeight, element.documentElement.clientHeight);\n }\n if (isShow ||\n (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n element = element;\n /* 已显示 */\n /* 从style中获取对应的高度,因为可能使用了class定义了width !important */\n /* 如果element.style.height为空 则从css里面获取是否定义了height信息如果定义了 则读取css里面定义的高度height */\n if (parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"height\").toString()) > 0) {\n return parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"height\").toString());\n }\n /* 如果从css里获取到的值不是大于0 可能是auto 则通过offsetHeight来进行计算 */\n if (element.offsetHeight > 0) {\n let borderTopWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderTopWidth\");\n let borderBottomWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderBottomWidth\");\n let paddingTop = DOMUtilsCommonUtils.getStyleValue(element, \"paddingTop\");\n let paddingBottom = DOMUtilsCommonUtils.getStyleValue(element, \"paddingBottom\");\n let backHeight = parseFloat(element.offsetHeight.toString()) -\n parseFloat(borderTopWidth.toString()) -\n parseFloat(borderBottomWidth.toString()) -\n parseFloat(paddingTop.toString()) -\n parseFloat(paddingBottom.toString());\n return parseFloat(backHeight.toString());\n }\n return 0;\n }\n else {\n /* 未显示 */\n element = element;\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let height = DOMUtilsContext.height(element, true);\n recovery();\n return height;\n }\n }\n outerWidth(element, isShow = false) {\n let DOMUtilsContext = this;\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.innerWidth;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n // @ts-ignore\n return;\n }\n element = element;\n if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);\n let marginLeft = DOMUtilsCommonUtils.getStyleValue(style, \"marginLeft\");\n let marginRight = DOMUtilsCommonUtils.getStyleValue(style, \"marginRight\");\n return element.offsetWidth + marginLeft + marginRight;\n }\n else {\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let outerWidth = DOMUtilsContext.outerWidth(element, true);\n recovery();\n return outerWidth;\n }\n }\n outerHeight(element, isShow = false) {\n let DOMUtilsContext = this;\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.innerHeight;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n // @ts-ignore\n return;\n }\n element = element;\n if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);\n let marginTop = DOMUtilsCommonUtils.getStyleValue(style, \"marginTop\");\n let marginBottom = DOMUtilsCommonUtils.getStyleValue(style, \"marginBottom\");\n return element.offsetHeight + marginTop + marginBottom;\n }\n else {\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let outerHeight = DOMUtilsContext.outerHeight(element, true);\n recovery();\n return outerHeight;\n }\n }\n /**\n * 在一定时间内改变元素的样式属性,实现动画效果\n * @param element 需要进行动画的元素\n * @param styles 动画结束时元素的样式属性\n * @param duration 动画持续时间,单位为毫秒\n * @param callback 动画结束后执行的函数\n * @example\n * // 监听元素a.xx的从显示变为隐藏\n * DOMUtils.animate(document.querySelector(\"a.xx\"),{ top:100},1000,function(){\n * console.log(\"已往上位移100px\")\n * })\n */\n animate(element, styles, duration = 1000, callback = null) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.animate($ele, styles, duration, callback);\n });\n return;\n }\n if (typeof duration !== \"number\" || duration <= 0) {\n throw new TypeError(\"duration must be a positive number\");\n }\n if (typeof callback !== \"function\" && callback !== void 0) {\n throw new TypeError(\"callback must be a function or null\");\n }\n if (typeof styles !== \"object\" || styles === void 0) {\n throw new TypeError(\"styles must be an object\");\n }\n if (Object.keys(styles).length === 0) {\n throw new Error(\"styles must contain at least one property\");\n }\n let start = performance.now();\n let from = {};\n let to = {};\n for (let prop in styles) {\n from[prop] =\n element.style[prop] ||\n DOMUtilsContext.windowApi.globalThis.getComputedStyle(element)[prop];\n to[prop] = styles[prop];\n }\n let timer = setInterval(function () {\n let timePassed = performance.now() - start;\n let progress = timePassed / duration;\n if (progress > 1) {\n progress = 1;\n }\n for (let prop in styles) {\n element.style[prop] =\n from[prop] + (to[prop] - from[prop]) * progress + \"px\";\n }\n if (progress === 1) {\n clearInterval(timer);\n if (callback) {\n callback();\n }\n }\n }, 10);\n }\n /**\n * 将一个元素包裹在指定的HTML元素中\n * @param element 要包裹的元素\n * @param wrapperHTML 要包裹的HTML元素的字符串表示形式\n * @example\n * // 将a.xx元素外面包裹一层div\n * DOMUtils.wrap(document.querySelector(\"a.xx\"),\"<div></div>\")\n */\n wrap(element, wrapperHTML) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.wrap($ele, wrapperHTML);\n });\n return;\n }\n element = element;\n // 创建一个新的div元素,并将wrapperHTML作为其innerHTML\n let wrapper = DOMUtilsContext.windowApi.document.createElement(\"div\");\n DOMUtilsContext.html(wrapper, wrapperHTML);\n let wrapperFirstChild = wrapper.firstChild;\n // 将要包裹的元素插入目标元素前面\n let parentElement = element.parentElement;\n parentElement.insertBefore(wrapperFirstChild, element);\n // 将要包裹的元素移动到wrapper中\n wrapperFirstChild.appendChild(element);\n }\n prev(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n return element.previousElementSibling;\n }\n next(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n return element.nextElementSibling;\n }\n /**\n * 取消挂载在window下的DOMUtils并返回DOMUtils\n * @example\n * let DOMUtils = window.DOMUtils.noConflict()\n */\n noConflict() {\n let DOMUtilsContext = this;\n if (DOMUtilsContext.windowApi.window.DOMUtils) {\n DOMUtilsCommonUtils.delete(window, \"DOMUtils\");\n }\n DOMUtilsContext.windowApi.window.DOMUtils = this;\n return this;\n }\n siblings(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n return Array.from(element.parentElement\n .children).filter((child) => child !== element);\n }\n /**\n * 获取当前元素的父元素\n * @param element 当前元素\n * @returns 父元素\n * @example\n * // 获取a.xx元素的父元素\n * DOMUtils.parent(document.querySelector(\"a.xx\"))\n * DOMUtils.parent(\"a.xx\")\n * > <div ...>....</div>\n */\n parent(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n let resultArray = [];\n element.forEach(($ele) => {\n resultArray.push(DOMUtilsContext.parent($ele));\n });\n return resultArray;\n }\n else {\n return element.parentElement;\n }\n }\n parseHTML(html, useParser = false, isComplete = false) {\n let DOMUtilsContext = this;\n // 去除html前后的空格\n html = html.trim();\n function parseHTMLByDOMParser() {\n let parser = new DOMParser();\n if (isComplete) {\n return parser.parseFromString(html, \"text/html\");\n }\n else {\n return parser.parseFromString(html, \"text/html\").body.firstChild;\n }\n }\n function parseHTMLByCreateDom() {\n let tempDIV = DOMUtilsContext.windowApi.document.createElement(\"div\");\n DOMUtilsContext.html(tempDIV, html);\n if (isComplete) {\n return tempDIV;\n }\n else {\n return tempDIV.firstChild;\n }\n }\n if (useParser) {\n return parseHTMLByDOMParser();\n }\n else {\n return parseHTMLByCreateDom();\n }\n }\n /**\n * 序列化表单元素\n * @param $form 表单元素\n * @example\n * DOMUtils.serialize(document.querySelector(\"form\"))\n * > xxx=xxx&aaa=\n */\n serialize($form) {\n const elements = $form.elements;\n let serializedArray = [];\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.name &&\n !element.disabled &&\n (element.checked ||\n [\n \"text\",\n \"hidden\",\n \"password\",\n \"textarea\",\n \"select-one\",\n \"select-multiple\",\n ].includes(element.type))) {\n if (element.type === \"select-multiple\") {\n for (let j = 0; j < element.options.length; j++) {\n if (element.options[j].selected) {\n serializedArray.push({\n name: element.name,\n value: element.options[j].value,\n });\n }\n }\n }\n else {\n serializedArray.push({ name: element.name, value: element.value });\n }\n }\n }\n return serializedArray\n .map((item) => `${encodeURIComponent(item.name)}=${encodeURIComponent(item.value)}`)\n .join(\"&\");\n }\n /**\n * 显示元素\n * @param target 当前元素\n * @param checkVisiblie 是否检测元素是否显示\n * + true (默认)如果检测到还未显示,则强制使用display: unset !important;\n * + false 不检测,直接设置display属性为空\n * @example\n * // 显示a.xx元素\n * DOMUtils.show(document.querySelector(\"a.xx\"))\n * DOMUtils.show(document.querySelectorAll(\"a.xx\"))\n * DOMUtils.show(\"a.xx\")\n */\n show(target, checkVisiblie = true) {\n let DOMUtilsContext = this;\n if (target == null) {\n return;\n }\n if (typeof target === \"string\") {\n target = DOMUtilsContext.selectorAll(target);\n }\n if (target instanceof NodeList || target instanceof Array) {\n target = target;\n for (const element of target) {\n DOMUtilsContext.show(element, checkVisiblie);\n }\n }\n else {\n target = target;\n target.style.display = \"\";\n if (checkVisiblie) {\n if (!DOMUtilsCommonUtils.isShow(target)) {\n /* 仍然是不显示,尝试使用强覆盖 */\n target.style.setProperty(\"display\", \"unset\", \"important\");\n }\n }\n }\n }\n /**\n * 隐藏元素\n * @param target 当前元素\n * @param checkVisiblie 是否检测元素是否显示\n * + true (默认)如果检测到显示,则强制使用display: none !important;\n * + false 不检测,直接设置display属性为none\n * @example\n * // 隐藏a.xx元素\n * DOMUtils.hide(document.querySelector(\"a.xx\"))\n * DOMUtils.hide(document.querySelectorAll(\"a.xx\"))\n * DOMUtils.hide(\"a.xx\")\n */\n hide(target, checkVisiblie = true) {\n let DOMUtilsContext = this;\n if (target == null) {\n return;\n }\n if (typeof target === \"string\") {\n target = DOMUtilsContext.selectorAll(target);\n }\n if (target instanceof NodeList || target instanceof Array) {\n target = target;\n for (const element of target) {\n DOMUtilsContext.hide(element, checkVisiblie);\n }\n }\n else {\n target = target;\n target.style.display = \"none\";\n if (checkVisiblie) {\n if (DOMUtilsCommonUtils.isShow(target)) {\n /* 仍然是显示,尝试使用强覆盖 */\n target.style.setProperty(\"display\", \"none\", \"important\");\n }\n }\n }\n }\n /**\n * 淡入元素\n * @param element 当前元素\n * @param duration 动画持续时间(毫秒),默认400毫秒\n * @param callback 动画结束的回调\n * @example\n * // 元素a.xx淡入\n * DOMUtils.fadeIn(document.querySelector(\"a.xx\"),2500,()=>{\n * console.log(\"淡入完毕\");\n * })\n * DOMUtils.fadeIn(\"a.xx\",undefined,()=>{\n * console.log(\"淡入完毕\");\n * })\n */\n fadeIn(element, duration = 400, callback) {\n if (element == null) {\n return;\n }\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.fadeIn($ele, duration, callback);\n });\n return;\n }\n element.style.opacity = \"0\";\n element.style.display = \"\";\n let start = null;\n let timer = null;\n function step(timestamp) {\n if (!start)\n start = timestamp;\n let progress = timestamp - start;\n element = element;\n element.style.opacity = Math.min(progress / duration, 1).toString();\n if (progress < duration) {\n DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n else {\n if (callback && typeof callback === \"function\") {\n callback();\n }\n DOMUtilsContext.windowApi.window.cancelAnimationFrame(timer);\n }\n }\n timer = DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n /**\n * 淡出元素\n * @param element 当前元素\n * @param duration 动画持续时间(毫秒),默认400毫秒\n * @param callback 动画结束的回调\n * @example\n * // 元素a.xx淡出\n * DOMUtils.fadeOut(document.querySelector(\"a.xx\"),2500,()=>{\n * console.log(\"淡出完毕\");\n * })\n * DOMUtils.fadeOut(\"a.xx\",undefined,()=>{\n * console.log(\"淡出完毕\");\n * })\n */\n fadeOut(element, duration = 400, callback) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.fadeOut($ele, duration, callback);\n });\n return;\n }\n element.style.opacity = \"1\";\n let start = null;\n let timer = null;\n function step(timestamp) {\n if (!start)\n start = timestamp;\n let progress = timestamp - start;\n element = element;\n element.style.opacity = Math.max(1 - progress / duration, 0).toString();\n if (progress < duration) {\n DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n else {\n element.style.display = \"none\";\n if (typeof callback === \"function\") {\n callback();\n }\n DOMUtilsContext.windowApi.window.cancelAnimationFrame(timer);\n }\n }\n timer = DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n /**\n * 切换元素的显示和隐藏状态\n * @param element 当前元素\n * @param checkVisiblie 是否检测元素是否显示\n * @example\n * // 如果元素a.xx当前是隐藏,则显示,如果是显示,则隐藏\n * DOMUtils.toggle(document.querySelector(\"a.xx\"))\n * DOMUtils.toggle(\"a.xx\")\n */\n toggle(element, checkVisiblie) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.toggle($ele);\n });\n return;\n }\n if (DOMUtilsContext.windowApi.globalThis\n .getComputedStyle(element)\n .getPropertyValue(\"display\") === \"none\") {\n DOMUtilsContext.show(element, checkVisiblie);\n }\n else {\n DOMUtilsContext.hide(element, checkVisiblie);\n }\n }\n /**\n * 创建一个新的DOMUtils实例\n * @param option\n * @returns\n */\n createDOMUtils(option) {\n return new DOMUtils(option);\n }\n /**\n * 获取文字的位置信息\n * @param $input 输入框\n * @param selectionStart 起始位置\n * @param selectionEnd 结束位置\n * @example\n * DOMUtils.getTextBoundingRect(document.querySelector(\"input\"));\n */\n getTextBoundingRect($input, selectionStart, selectionEnd) {\n let DOMUtilsContext = this;\n // Basic parameter validation\n if (!$input || !(\"value\" in $input))\n return $input;\n if (selectionStart == null) {\n selectionStart = $input.selectionStart || 0;\n }\n if (selectionEnd == null) {\n selectionEnd = $input.selectionEnd || 0;\n }\n if (typeof selectionStart == \"string\")\n selectionStart = parseFloat(selectionStart);\n if (typeof selectionStart != \"number\" || isNaN(selectionStart)) {\n selectionStart = 0;\n }\n if (selectionStart < 0)\n selectionStart = 0;\n else\n selectionStart = Math.min($input.value.length, selectionStart);\n if (typeof selectionEnd == \"string\")\n selectionEnd = parseFloat(selectionEnd);\n if (typeof selectionEnd != \"number\" ||\n isNaN(selectionEnd) ||\n selectionEnd < selectionStart) {\n selectionEnd = selectionStart;\n }\n if (selectionEnd < 0)\n selectionEnd = 0;\n else\n selectionEnd = Math.min($input.value.length, selectionEnd);\n // If available (thus IE), use the createTextRange method\n // @ts-ignore\n if (typeof $input.createTextRange == \"function\") {\n let range = $input.createTextRange();\n range.collapse(true);\n range.moveStart(\"character\", selectionStart);\n range.moveEnd(\"character\", selectionEnd - selectionStart);\n return range.getBoundingClientRect();\n }\n // createTextRange is not supported, create a fake text range\n let offset = getInputOffset(), topPos = offset.top, leftPos = offset.left, width = getInputCSS(\"width\", true), height = getInputCSS(\"height\", true);\n // Styles to simulate a node in an input field\n let cssDefaultStyles = \"white-space:pre;padding:0;margin:0;\", listOfModifiers = [\n \"direction\",\n \"font-family\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-variant\",\n \"font-weight\",\n \"font-style\",\n \"letter-spacing\",\n \"line-height\",\n \"text-align\",\n \"text-indent\",\n \"text-transform\",\n \"word-wrap\",\n \"word-spacing\",\n ];\n topPos += getInputCSS(\"padding-top\", true);\n topPos += getInputCSS(\"border-top-width\", true);\n leftPos += getInputCSS(\"padding-left\", true);\n leftPos += getInputCSS(\"border-left-width\", true);\n leftPos += 1; //Seems to be necessary\n for (let index = 0; index < listOfModifiers.length; index++) {\n let property = listOfModifiers[index];\n // @ts-ignore\n cssDefaultStyles += property + \":\" + getInputCSS(property) + \";\";\n }\n // End of CSS variable checks\n // 不能为空,不然获取不到高度\n let text = $input.value || \"G\", textLen = text.length, fakeClone = DOMUtilsContext.windowApi.document.createElement(\"div\");\n if (selectionStart > 0)\n appendPart(0, selectionStart);\n var fakeRange = appendPart(selectionStart, selectionEnd);\n if (textLen > selectionEnd)\n appendPart(selectionEnd, textLen);\n // Styles to inherit the font styles of the element\n fakeClone.style.cssText = cssDefaultStyles;\n // Styles to position the text node at the desired position\n fakeClone.style.position = \"absolute\";\n fakeClone.style.top = topPos + \"px\";\n fakeClone.style.left = leftPos + \"px\";\n fakeClone.style.width = width + \"px\";\n fakeClone.style.height = height + \"px\";\n DOMUtilsContext.windowApi.document.body.appendChild(fakeClone);\n var returnValue = fakeRange.getBoundingClientRect(); //Get rect\n fakeClone?.parentNode?.removeChild(fakeClone); //Remove temp\n return returnValue;\n // Local functions for readability of the previous code\n /**\n *\n * @param start\n * @param end\n * @returns\n */\n function appendPart(start, end) {\n var span = DOMUtilsContext.windowApi.document.createElement(\"span\");\n span.style.cssText = cssDefaultStyles; //Force styles to prevent unexpected results\n span.textContent = text.substring(start, end);\n fakeClone.appendChild(span);\n return span;\n }\n // Computing offset position\n function getInputOffset() {\n let body = DOMUtilsContext.windowApi.document.body, win = DOMUtilsContext.windowApi.document.defaultView, docElem = DOMUtilsContext.windowApi.document.documentElement, $box = DOMUtilsContext.windowApi.document.createElement(\"div\");\n $box.style.paddingLeft = $box.style.width = \"1px\";\n body.appendChild($box);\n var isBoxModel = $box.offsetWidth == 2;\n body.removeChild($box);\n let $boxRect = $input.getBoundingClientRect();\n var clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, scrollTop = win.pageYOffset ||\n (isBoxModel && docElem.scrollTop) ||\n body.scrollTop, scrollLeft = win.pageXOffset ||\n (isBoxModel && docElem.scrollLeft) ||\n body.scrollLeft;\n return {\n top: $boxRect.top + scrollTop - clientTop,\n left: $boxRect.left + scrollLeft - clientLeft,\n };\n }\n /**\n *\n * @param prop\n * @param isNumber\n * @returns\n */\n function getInputCSS(prop, isNumber) {\n var val = DOMUtilsContext.windowApi.document\n .defaultView.getComputedStyle($input, null)\n .getPropertyValue(prop);\n return isNumber ? parseFloat(val) : val;\n }\n }\n}\nlet domUtils = new DOMUtils();\nexport { domUtils as DOMUtils };\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.system.js","sources":["../src/WindowApi.ts","../src/DOMUtilsCommonUtils.ts","../src/DOMUtilsData.ts","../src/DOMUtilsOriginPrototype.ts","../src/DOMUtilsEvent.ts","../src/DOMUtils.ts"],"sourcesContent":["export class WindowApi {\n /** 默认的配置 */\n defaultApi = {\n document: document,\n window: window,\n globalThis: globalThis,\n self: self,\n top: top,\n };\n /** 使用的配置 */\n api;\n constructor(option) {\n if (option) {\n if (option.globalThis == null) {\n option.globalThis = option.window;\n }\n if (option.self == null) {\n option.self = option.window;\n }\n }\n if (!option) {\n option = Object.assign({}, this.defaultApi);\n }\n // @ts-ignore\n this.api = Object.assign({}, option);\n }\n get document() {\n return this.api.document;\n }\n get window() {\n return this.api.window;\n }\n get globalThis() {\n return this.api.globalThis;\n }\n get self() {\n return this.api.self;\n }\n get top() {\n return this.api.top;\n }\n}\n","import { WindowApi } from \"./WindowApi\";\n/** 通用工具类 */\nconst DOMUtilsCommonUtils = {\n windowApi: new WindowApi({\n document: document,\n window: window,\n top: top,\n }),\n /**\n * 判断元素是否已显示或已连接\n * @param element\n */\n isShow(element) {\n return Boolean(element.getClientRects().length);\n },\n /**\n * 获取安全的html\n */\n getSafeHTML(text) {\n // @ts-ignore\n if (globalThis.trustedTypes) {\n // @ts-ignore\n const policy = globalThis.trustedTypes.createPolicy(\"safe-innerHTML\", {\n createHTML: (html) => html,\n });\n return policy.createHTML(text);\n }\n else {\n return text;\n }\n },\n /**\n * 在CSP策略下设置innerHTML\n * @param $el 元素\n * @param text 文本\n */\n setSafeHTML($el, text) {\n // 创建 TrustedHTML 策略(需 CSP 允许)\n $el.innerHTML = this.getSafeHTML(text);\n },\n /**\n * 用于显示元素并获取它的高度宽度等其它属性\n * @param element\n */\n showElement(element) {\n let dupNode = element.cloneNode(true);\n dupNode.setAttribute(\"style\", \"visibility: hidden !important;display:block !important;\");\n this.windowApi.document.documentElement.appendChild(dupNode);\n return {\n /**\n * 恢复修改的style\n */\n recovery() {\n dupNode.remove();\n },\n };\n },\n /**\n * 获取元素上的Float格式的属性px\n * @param element\n * @param styleName style名\n */\n getStyleValue(element, styleName) {\n let view = null;\n let styles = null;\n if (element instanceof CSSStyleDeclaration) {\n /* 直接就获取了style属性 */\n styles = element;\n }\n else {\n view = element.ownerDocument.defaultView;\n if (!view || !view.opener) {\n view = window;\n }\n styles = view.getComputedStyle(element);\n }\n let value = parseFloat(styles[styleName]);\n if (isNaN(value)) {\n return 0;\n }\n else {\n return value;\n }\n },\n /**\n * 判断是否是window,例如window、self、globalThis\n * @param target\n */\n isWin(target) {\n if (typeof target !== \"object\") {\n return false;\n }\n if (target instanceof Node) {\n return false;\n }\n if (target === globalThis) {\n return true;\n }\n if (target === window) {\n return true;\n }\n if (target === self) {\n return true;\n }\n if (target === globalThis) {\n return true;\n }\n if (target === window) {\n return true;\n }\n if (target === self) {\n return true;\n }\n if (typeof unsafeWindow !== \"undefined\" && target === unsafeWindow) {\n return true;\n }\n if (target?.Math?.toString() !== \"[object Math]\") {\n return false;\n }\n return true;\n },\n /**\n * 删除对象上的属性\n * @param target\n * @param propName\n */\n delete(target, propName) {\n if (typeof Reflect === \"object\" && Reflect.deleteProperty) {\n Reflect.deleteProperty(target, propName);\n }\n else {\n delete target[propName];\n }\n },\n};\nexport { DOMUtilsCommonUtils };\n","/* 数据 */\nconst DOMUtilsData = {\n /** .on添加在元素存储的事件 */\n SymbolEvents: Symbol(\"events_\" + (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)),\n};\nexport { DOMUtilsData };\n","const OriginPrototype = {\n Object: {\n defineProperty: Object.defineProperty,\n },\n};\nexport { OriginPrototype };\n","import { isNodeList } from \"./DOMUtils\";\nimport { DOMUtilsCommonUtils } from \"./DOMUtilsCommonUtils\";\nimport { DOMUtilsData } from \"./DOMUtilsData\";\nimport { OriginPrototype } from \"./DOMUtilsOriginPrototype\";\nimport { WindowApi } from \"./WindowApi\";\nexport class DOMUtilsEvent {\n windowApi;\n constructor(windowApiOption) {\n this.windowApi = new WindowApi(windowApiOption);\n }\n on(element, eventType, selector, callback, option) {\n /**\n * 获取option配置\n * @param args\n * @param startIndex\n * @param option\n */\n function getOption(args, startIndex, option) {\n let currentParam = args[startIndex];\n if (typeof currentParam === \"boolean\") {\n option.capture = currentParam;\n if (typeof args[startIndex + 1] === \"boolean\") {\n option.once = args[startIndex + 1];\n }\n if (typeof args[startIndex + 2] === \"boolean\") {\n option.passive = args[startIndex + 2];\n }\n }\n else if (typeof currentParam === \"object\" &&\n (\"capture\" in currentParam ||\n \"once\" in currentParam ||\n \"passive\" in currentParam ||\n \"isComposedPath\" in currentParam)) {\n option.capture = currentParam.capture;\n option.once = currentParam.once;\n option.passive = currentParam.passive;\n option.isComposedPath = currentParam.isComposedPath;\n }\n return option;\n }\n let DOMUtilsContext = this;\n let args = arguments;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n element = element;\n elementList = [...element];\n }\n else {\n elementList.push(element);\n }\n // 事件名\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventTypeList.concat(eventType);\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventTypeList.concat(eventType.split(\" \"));\n }\n // 子元素选择器\n let selectorList = [];\n if (Array.isArray(selector)) {\n selectorList = selectorList.concat(selector);\n }\n else if (typeof selector === \"string\") {\n selectorList.push(selector);\n }\n // 事件回调\n let listenerCallBack = callback;\n // 事件配置\n let listenerOption = {\n capture: false,\n once: false,\n passive: false,\n isComposedPath: false,\n };\n if (typeof selector === \"function\") {\n /* 这是为没有selector的情况 */\n listenerCallBack = selector;\n listenerOption = getOption(args, 3, listenerOption);\n }\n else {\n /* 这是存在selector的情况 */\n listenerOption = getOption(args, 4, listenerOption);\n }\n /**\n * 如果是once,那么删除该监听和元素上的事件和监听\n */\n function checkOptionOnceToRemoveEventListener() {\n if (listenerOption.once) {\n DOMUtilsContext.off(element, eventType, selector, callback, option);\n }\n }\n elementList.forEach((elementItem) => {\n /**\n * 事件回调\n * @param event\n */\n function domUtilsEventCallBack(event) {\n if (selectorList.length) {\n /* 存在子元素选择器 */\n // 这时候的this和target都是子元素选择器的元素\n let eventTarget = listenerOption.isComposedPath\n ? event.composedPath()[0]\n : event.target;\n let totalParent = DOMUtilsCommonUtils.isWin(elementItem) ||\n // @ts-ignore\n elementItem === DOMUtilsContext.windowApi.document\n ? DOMUtilsContext.windowApi.document.documentElement\n : elementItem;\n let findValue = selectorList.find((selectorItem) => {\n // 判断目标元素是否匹配选择器\n if (eventTarget?.matches(selectorItem)) {\n /* 当前目标可以被selector所匹配到 */\n return true;\n }\n /* 在上层与主元素之间寻找可以被selector所匹配到的 */\n let $closestMatches = eventTarget?.closest(selectorItem);\n if ($closestMatches && totalParent?.contains($closestMatches)) {\n eventTarget = $closestMatches;\n return true;\n }\n return false;\n });\n if (findValue) {\n // 这里尝试使用defineProperty修改event的target值\n try {\n OriginPrototype.Object.defineProperty(event, \"target\", {\n get() {\n return eventTarget;\n },\n });\n }\n catch (error) { }\n listenerCallBack.call(eventTarget, event, eventTarget);\n checkOptionOnceToRemoveEventListener();\n }\n }\n else {\n // 这时候的this指向监听的元素\n listenerCallBack.call(elementItem, event);\n checkOptionOnceToRemoveEventListener();\n }\n }\n /* 遍历事件名设置元素事件 */\n eventTypeList.forEach((eventName) => {\n elementItem.addEventListener(eventName, domUtilsEventCallBack, listenerOption);\n /* 获取对象上的事件 */\n let elementEvents = elementItem[DOMUtilsData.SymbolEvents] || {};\n /* 初始化对象上的xx事件 */\n elementEvents[eventName] = elementEvents[eventName] || [];\n elementEvents[eventName].push({\n selector: selectorList,\n option: listenerOption,\n callback: domUtilsEventCallBack,\n originCallBack: listenerCallBack,\n });\n /* 覆盖事件 */\n // @ts-ignore\n elementItem[DOMUtilsData.SymbolEvents] = elementEvents;\n });\n });\n }\n off(element, eventType, selector, callback, option, filter) {\n /**\n * 获取option配置\n * @param args1\n * @param startIndex\n * @param option\n */\n function getOption(args1, startIndex, option) {\n let currentParam = args1[startIndex];\n if (typeof currentParam === \"boolean\") {\n option.capture = currentParam;\n }\n else if (typeof currentParam === \"object\" &&\n \"capture\" in currentParam) {\n option.capture = currentParam.capture;\n }\n return option;\n }\n let DOMUtilsContext = this;\n let args = arguments;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n element = element;\n elementList = [...element];\n }\n else {\n elementList.push(element);\n }\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventTypeList.concat(eventType);\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventTypeList.concat(eventType.split(\" \"));\n }\n // 子元素选择器\n let selectorList = [];\n if (Array.isArray(selector)) {\n selectorList = selectorList.concat(selector);\n }\n else if (typeof selector === \"string\") {\n selectorList.push(selector);\n }\n /**\n * 事件的回调函数\n */\n let listenerCallBack = callback;\n /**\n * 事件的配置\n */\n let listenerOption = {\n capture: false,\n };\n if (typeof selector === \"function\") {\n /* 这是为没有selector的情况 */\n listenerCallBack = selector;\n listenerOption = getOption(args, 3, listenerOption);\n }\n else {\n listenerOption = getOption(args, 4, listenerOption);\n }\n // 是否移除所有事件\n let isRemoveAll = false;\n if (args.length === 2) {\n // 目标函数、事件名\n isRemoveAll = true;\n }\n else if ((args.length === 3 && typeof args[2] === \"string\") ||\n Array.isArray(args[2])) {\n // 目标函数、事件名、子元素选择器\n isRemoveAll = true;\n }\n elementList.forEach((elementItem) => {\n /* 获取对象上的事件 */\n // @ts-ignore\n let elementEvents = elementItem[DOMUtilsData.SymbolEvents] || {};\n eventTypeList.forEach((eventName) => {\n let handlers = elementEvents[eventName] || [];\n if (typeof filter === \"function\") {\n handlers = handlers.filter(filter);\n }\n for (let index = 0; index < handlers.length; index++) {\n let handler = handlers[index];\n let flag = true;\n if (flag &&\n listenerCallBack &&\n handler.originCallBack !== listenerCallBack) {\n // callback不同\n flag = false;\n }\n if (flag && selectorList.length && Array.isArray(handler.selector)) {\n if (JSON.stringify(handler.selector) !== JSON.stringify(selectorList)) {\n // 子元素选择器不同\n flag = false;\n }\n }\n if (flag && listenerOption.capture !== handler.option.capture) {\n // 事件的配置项不同\n flag = false;\n }\n if (flag || isRemoveAll) {\n elementItem.removeEventListener(eventName, handler.callback, handler.option);\n handlers.splice(index--, 1);\n }\n }\n if (handlers.length === 0) {\n /* 如果没有任意的handler,那么删除该属性 */\n DOMUtilsCommonUtils.delete(elementEvents, eventType);\n }\n });\n // @ts-ignore\n elementItem[DOMUtilsData.SymbolEvents] = elementEvents;\n });\n }\n /**\n * 取消绑定所有的事件\n * @param element 需要取消绑定的元素|元素数组\n * @param eventType (可选)需要取消监听的事件\n */\n offAll(element, eventType) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n elementList = [...element];\n }\n else {\n elementList.push(element);\n }\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventTypeList.concat(eventType);\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventTypeList.concat(eventType.split(\" \"));\n }\n elementList.forEach((elementItem) => {\n Object.getOwnPropertySymbols(elementItem).forEach((symbolEvents) => {\n if (!symbolEvents.toString().startsWith(\"Symbol(events_\")) {\n return;\n }\n let elementEvents = elementItem[symbolEvents] || {};\n let iterEventNameList = eventTypeList.length\n ? eventTypeList\n : Object.keys(elementEvents);\n iterEventNameList.forEach((eventName) => {\n let handlers = elementEvents[eventName];\n if (!handlers) {\n return;\n }\n for (const handler of handlers) {\n elementItem.removeEventListener(eventName, handler.callback, {\n capture: handler[\"option\"][\"capture\"],\n });\n }\n // @ts-ignore\n DOMUtilsCommonUtils.delete(elementItem[symbolEvents], eventName);\n });\n });\n });\n }\n /**\n * 等待文档加载完成后执行指定的函数\n * @param callback 需要执行的函数\n * @example\n * DOMUtils.ready(function(){\n * console.log(\"文档加载完毕\")\n * })\n */\n ready(callback) {\n if (typeof callback !== \"function\") {\n return;\n }\n let DOMUtilsContext = this;\n /**\n * 检测文档是否加载完毕\n */\n function checkDOMReadyState() {\n try {\n if (DOMUtilsContext.windowApi.document.readyState === \"complete\" ||\n (DOMUtilsContext.windowApi.document.readyState !== \"loading\" &&\n !DOMUtilsContext.windowApi.document.documentElement\n .doScroll)) {\n return true;\n }\n else {\n return false;\n }\n }\n catch (error) {\n return false;\n }\n }\n /**\n * 成功加载完毕后触发的回调函数\n */\n function completed() {\n removeDomReadyListener();\n callback();\n }\n let targetList = [\n {\n target: DOMUtilsContext.windowApi.document,\n eventType: \"DOMContentLoaded\",\n callback: completed,\n },\n {\n target: DOMUtilsContext.windowApi.window,\n eventType: \"load\",\n callback: completed,\n },\n ];\n /**\n * 添加监听\n */\n function addDomReadyListener() {\n for (let index = 0; index < targetList.length; index++) {\n let item = targetList[index];\n item.target.addEventListener(item.eventType, item.callback);\n }\n }\n /**\n * 移除监听\n */\n function removeDomReadyListener() {\n for (let index = 0; index < targetList.length; index++) {\n let item = targetList[index];\n item.target.removeEventListener(item.eventType, item.callback);\n }\n }\n if (checkDOMReadyState()) {\n /* 检查document状态 */\n setTimeout(callback);\n }\n else {\n /* 添加监听 */\n addDomReadyListener();\n }\n }\n /**\n * 主动触发事件\n * @param element 需要触发的元素|元素数组|window\n * @param eventType 需要触发的事件\n * @param details 赋予触发的Event的额外属性,如果是Event类型,那么将自动代替默认new的Event对象\n * @param useDispatchToTriggerEvent 是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的click事件\n * DOMUtils.trigger(document.querySelector(\"a.xx\"),\"click\")\n * DOMUtils.trigger(\"a.xx\",\"click\")\n * // 触发元素a.xx的click、tap、hover事件\n * DOMUtils.trigger(document.querySelector(\"a.xx\"),\"click tap hover\")\n * DOMUtils.trigger(\"a.xx\",[\"click\",\"tap\",\"hover\"])\n */\n trigger(element, eventType, details, useDispatchToTriggerEvent = true) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n let elementList = [];\n if (element instanceof NodeList || Array.isArray(element)) {\n element = element;\n elementList = [...element];\n }\n else {\n elementList = [element];\n }\n let eventTypeList = [];\n if (Array.isArray(eventType)) {\n eventTypeList = eventType;\n }\n else if (typeof eventType === \"string\") {\n eventTypeList = eventType.split(\" \");\n }\n elementList.forEach((elementItem) => {\n /* 获取对象上的事件 */\n let events = elementItem[DOMUtilsData.SymbolEvents] || {};\n eventTypeList.forEach((_eventType_) => {\n let event = null;\n if (details && details instanceof Event) {\n event = details;\n }\n else {\n event = new Event(_eventType_);\n if (details) {\n Object.keys(details).forEach((keyName) => {\n event[keyName] = details[keyName];\n });\n }\n }\n if (useDispatchToTriggerEvent == false && _eventType_ in events) {\n events[_eventType_].forEach((eventsItem) => {\n eventsItem.callback(event);\n });\n }\n else {\n elementItem.dispatchEvent(event);\n }\n });\n });\n }\n /**\n * 绑定或触发元素的click事件\n * @param element 目标元素\n * @param handler (可选)事件处理函数\n * @param details (可选)赋予触发的Event的额外属性\n * @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的click事件\n * DOMUtils.click(document.querySelector(\"a.xx\"))\n * DOMUtils.click(\"a.xx\")\n * DOMUtils.click(\"a.xx\",function(){\n * console.log(\"触发click事件成功\")\n * })\n * */\n click(element, handler, details, useDispatchToTriggerEvent) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.click($ele, handler, details, useDispatchToTriggerEvent);\n });\n return;\n }\n if (handler == null) {\n DOMUtilsContext.trigger(element, \"click\", details, useDispatchToTriggerEvent);\n }\n else {\n DOMUtilsContext.on(element, \"click\", null, handler);\n }\n }\n /**\n * 绑定或触发元素的blur事件\n * @param element 目标元素\n * @param handler (可选)事件处理函数\n * @param details (可选)赋予触发的Event的额外属性\n * @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的blur事件\n * DOMUtils.blur(document.querySelector(\"a.xx\"))\n * DOMUtils.blur(\"a.xx\")\n * DOMUtils.blur(\"a.xx\",function(){\n * console.log(\"触发blur事件成功\")\n * })\n * */\n blur(element, handler, details, useDispatchToTriggerEvent) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);\n });\n return;\n }\n if (handler === null) {\n DOMUtilsContext.trigger(element, \"blur\", details, useDispatchToTriggerEvent);\n }\n else {\n DOMUtilsContext.on(element, \"blur\", null, handler);\n }\n }\n /**\n * 绑定或触发元素的focus事件\n * @param element 目标元素\n * @param handler (可选)事件处理函数\n * @param details (可选)赋予触发的Event的额外属性\n * @param useDispatchToTriggerEvent (可选)是否使用dispatchEvent来触发事件,默认true\n * @example\n * // 触发元素a.xx的focus事件\n * DOMUtils.focus(document.querySelector(\"a.xx\"))\n * DOMUtils.focus(\"a.xx\")\n * DOMUtils.focus(\"a.xx\",function(){\n * console.log(\"触发focus事件成功\")\n * })\n * */\n focus(element, handler, details, useDispatchToTriggerEvent) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.focus($ele, handler, details, useDispatchToTriggerEvent);\n });\n return;\n }\n if (handler == null) {\n DOMUtilsContext.trigger(element, \"focus\", details, useDispatchToTriggerEvent);\n }\n else {\n DOMUtilsContext.on(element, \"focus\", null, handler);\n }\n }\n /**\n * 当鼠标移入或移出元素时触发事件\n * @param element 当前元素\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的移入或移出\n * DOMUtils.hover(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"移入/移除\");\n * })\n * DOMUtils.hover(\"a.xx\",()=>{\n * console.log(\"移入/移除\");\n * })\n */\n hover(element, handler, option) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.hover($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"mouseenter\", null, handler, option);\n DOMUtilsContext.on(element, \"mouseleave\", null, handler, option);\n }\n /**\n * 当按键松开时触发事件\n * keydown - > keypress - > keyup\n * @param element 当前元素\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的按键松开\n * DOMUtils.keyup(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"按键松开\");\n * })\n * DOMUtils.keyup(\"a.xx\",()=>{\n * console.log(\"按键松开\");\n * })\n */\n keyup(element, handler, option) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.keyup($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"keyup\", null, handler, option);\n }\n /**\n * 当按键按下时触发事件\n * keydown - > keypress - > keyup\n * @param element 目标\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的按键按下\n * DOMUtils.keydown(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"按键按下\");\n * })\n * DOMUtils.keydown(\"a.xx\",()=>{\n * console.log(\"按键按下\");\n * })\n */\n keydown(element, handler, option) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.keydown($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"keydown\", null, handler, option);\n }\n /**\n * 当按键按下时触发事件\n * keydown - > keypress - > keyup\n * @param element 目标\n * @param handler 事件处理函数\n * @param option 配置\n * @example\n * // 监听a.xx元素的按键按下\n * DOMUtils.keypress(document.querySelector(\"a.xx\"),()=>{\n * console.log(\"按键按下\");\n * })\n * DOMUtils.keypress(\"a.xx\",()=>{\n * console.log(\"按键按下\");\n * })\n */\n keypress(element, handler, option) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.keypress($ele, handler, option);\n });\n return;\n }\n DOMUtilsContext.on(element, \"keypress\", null, handler, option);\n }\n /**\n * 监听某个元素键盘按键事件或window全局按键事件\n * 按下有值的键时触发,按下Ctrl\\Alt\\Shift\\Meta是无值键。按下先触发keydown事件,再触发keypress事件。\n * @param element 需要监听的对象,可以是全局Window或者某个元素\n * @param eventName 事件名,默认keypress\n * @param callback 自己定义的回调事件,参数1为当前的key,参数2为组合按键,数组类型,包含ctrl、shift、alt和meta(win键或mac的cmd键)\n * @param options 监听事件的配置\n * @example\n Utils.listenKeyboard(window,(keyName,keyValue,otherKey,event)=>{\n if(keyName === \"Enter\"){\n console.log(\"回车按键的值是:\"+keyValue)\n }\n if(otherKey.indexOf(\"ctrl\") && keyName === \"Enter\" ){\n console.log(\"Ctrl和回车键\");\n }\n })\n * @example\n 字母和数字键的键码值(keyCode)\n 按键\t键码\t按键\t键码\t按键\t键码\t按键\t键码\n A\t65\tJ\t74\tS\t83\t1\t49\n B\t66\tK\t75\tT\t84\t2\t50\n C\t67\tL\t76\tU\t85\t3\t51\n D\t68\tM\t77\tV\t86\t4\t52\n E\t69\tN\t78\tW\t87\t5\t53\n F\t70\tO\t79\tX\t88\t6\t54\n G\t71\tP\t80\tY\t89\t7\t55\n H\t72\tQ\t81\tZ\t90\t8\t56\n I\t73\tR\t82\t0\t48\t9\t57\n \n 数字键盘上的键的键码值(keyCode)\n 功能键键码值(keyCode)\n 按键\t键码\t按键 \t键码\t按键\t键码\t按键\t键码\n 0\t96\t8\t104\tF1\t112\tF7\t118\n 1\t97\t9\t105\tF2\t113\tF8\t119\n 2\t98\t*\t106\tF3\t114\tF9\t120\n 3\t99\t+\t107\tF4\t115\tF10\t121\n 4\t100\tEnter\t108\tF5\t116\tF11\t122\n 5\t101\t-\t109\tF6\t117\tF12\t123\n 6\t102\t.\t110\n 7\t103\t/\t111\n \n 控制键键码值(keyCode)\n 按键\t\t键码\t按键\t\t键码\t按键\t\t键码\t按键\t\t键码\n BackSpace\t8\tEsc\t\t27\t→\t\t39\t-_\t\t189\n Tab\t\t9\tSpacebar\t32\t↓\t\t40\t.>\t\t190\n Clear\t\t12\tPage Up\t\t33\tInsert\t\t45\t/?\t\t191\n Enter\t\t13\tPage Down\t34\tDelete\t\t46\t`~\t\t192\n Shift\t\t16\tEnd\t\t35\tNum Lock\t144\t[{\t\t219\n Control\t\t17\tHome\t\t36\t;:\t\t186\t\\|\t\t220\n Alt\t\t18\t←\t\t37\t=+\t\t187\t]}\t\t221\n Cape Lock\t20\t↑\t\t38\t,<\t\t188\t'\"\t\t222\n \n 多媒体键码值(keyCode)\n 按键\t\t键码\n 音量加\t\t175\n 音量减\t\t174\n 停止\t\t179\n 静音\t\t173\n 浏览器\t\t172\n 邮件\t\t180\n 搜索\t\t170\n 收藏\t\t171\n **/\n listenKeyboard(element, eventName = \"keypress\", callback, options) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n let keyboardEventCallBack = function (event) {\n /** 键名 */\n let keyName = event.key || event.code;\n /** 键值 */\n let keyValue = event.charCode || event.keyCode || event.which;\n /** 组合键列表 */\n let otherCodeList = [];\n if (event.ctrlKey) {\n otherCodeList.push(\"ctrl\");\n }\n if (event.altKey) {\n otherCodeList.push(\"alt\");\n }\n if (event.metaKey) {\n otherCodeList.push(\"meta\");\n }\n if (event.shiftKey) {\n otherCodeList.push(\"shift\");\n }\n if (typeof callback === \"function\") {\n callback(keyName, keyValue, otherCodeList, event);\n }\n };\n DOMUtilsContext.on(element, eventName, keyboardEventCallBack, options);\n return {\n removeListen: () => {\n DOMUtilsContext.off(element, eventName, keyboardEventCallBack, options);\n },\n };\n }\n selector(selector) {\n return this.selectorAll(selector)[0];\n }\n selectorAll(selector) {\n const context = this;\n selector = selector.trim();\n if (selector.match(/[^\\s]{1}:empty$/gi)) {\n // empty 语法\n selector = selector.replace(/:empty$/gi, \"\");\n return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {\n return $ele?.innerHTML?.trim() === \"\";\n });\n }\n else if (selector.match(/[^\\s]{1}:contains\\(\"(.*)\"\\)$/i) ||\n selector.match(/[^\\s]{1}:contains\\('(.*)'\\)$/i)) {\n // contains 语法\n let textMatch = selector.match(/:contains\\((\"|')(.*)(\"|')\\)$/i);\n let text = textMatch[2];\n selector = selector.replace(/:contains\\((\"|')(.*)(\"|')\\)$/gi, \"\");\n return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {\n // @ts-ignore\n return ($ele?.textContent || $ele?.innerText)?.includes(text);\n });\n }\n else if (selector.match(/[^\\s]{1}:regexp\\(\"(.*)\"\\)$/i) ||\n selector.match(/[^\\s]{1}:regexp\\('(.*)'\\)$/i)) {\n // regexp 语法\n let textMatch = selector.match(/:regexp\\((\"|')(.*)(\"|')\\)$/i);\n let pattern = textMatch[2];\n let flagMatch = pattern.match(/(\"|'),[\\s]*(\"|')([igm]{0,3})$/i);\n let flags = \"\";\n if (flagMatch) {\n pattern = pattern.replace(/(\"|'),[\\s]*(\"|')([igm]{0,3})$/gi, \"\");\n flags = flagMatch[3];\n }\n let regexp = new RegExp(pattern, flags);\n selector = selector.replace(/:regexp\\((\"|')(.*)(\"|')\\)$/gi, \"\");\n return Array.from(context.windowApi.document.querySelectorAll(selector)).filter(($ele) => {\n // @ts-ignore\n return Boolean(($ele?.textContent || $ele?.innerText)?.match(regexp));\n });\n }\n else {\n // 普通语法\n return Array.from(context.windowApi.document.querySelectorAll(selector));\n }\n }\n}\n","import { DOMUtilsCommonUtils } from \"./DOMUtilsCommonUtils\";\nimport { DOMUtilsEvent } from \"./DOMUtilsEvent\";\n/**\n * 判断是否是元素列表\n * @param $ele\n */\nexport const isNodeList = ($ele) => {\n return Array.isArray($ele) || $ele instanceof NodeList;\n};\nclass DOMUtils extends DOMUtilsEvent {\n constructor(option) {\n super(option);\n }\n /** 版本号 */\n version = \"2025.5.12\";\n attr(element, attrName, attrValue) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (attrValue == null) {\n // 获取属性\n return DOMUtilsContext.attr(element[0], attrName, attrValue);\n }\n else {\n // 设置属性\n element.forEach(($ele) => {\n DOMUtilsContext.attr($ele, attrName, attrValue);\n });\n return;\n }\n }\n if (attrValue == null) {\n return element.getAttribute(attrName);\n }\n else {\n element.setAttribute(attrName, attrValue);\n }\n }\n /**\n * 创建元素\n * @param tagName 标签名\n * @param property 属性\n * @param attributes 元素上的自定义属性\n * @example\n * // 创建一个DIV元素,且属性class为xxx\n * DOMUtils.createElement(\"div\",undefined,{ class:\"xxx\" });\n * > <div class=\"xxx\"></div>\n * @example\n * // 创建一个DIV元素\n * DOMUtils.createElement(\"div\");\n * > <div></div>\n * @example\n * // 创建一个DIV元素\n * DOMUtils.createElement(\"div\",\"测试\");\n * > <div>测试</div>\n */\n createElement(\n /** 元素名 */\n tagName, \n /** 属性 */\n property, \n /** 自定义属性 */\n attributes) {\n let DOMUtilsContext = this;\n let tempElement = DOMUtilsContext.windowApi.document.createElement(tagName);\n if (typeof property === \"string\") {\n DOMUtilsContext.html(tempElement, property);\n return tempElement;\n }\n if (property == null) {\n property = {};\n }\n if (attributes == null) {\n attributes = {};\n }\n Object.keys(property).forEach((key) => {\n let value = property[key];\n if (key === \"innerHTML\") {\n DOMUtilsContext.html(tempElement, value);\n return;\n }\n tempElement[key] = value;\n });\n Object.keys(attributes).forEach((key) => {\n let value = attributes[key];\n if (typeof value === \"object\") {\n /* object转字符串 */\n value = JSON.stringify(value);\n }\n else if (typeof value === \"function\") {\n /* function转字符串 */\n value = value.toString();\n }\n tempElement.setAttribute(key, value);\n });\n return tempElement;\n }\n css(element, property, value) {\n let DOMUtilsContext = this;\n /**\n * 把纯数字没有px的加上\n */\n function handlePixe(propertyName, propertyValue) {\n let allowAddPixe = [\n \"width\",\n \"height\",\n \"top\",\n \"left\",\n \"right\",\n \"bottom\",\n \"font-size\",\n ];\n if (typeof propertyValue === \"number\") {\n propertyValue = propertyValue.toString();\n }\n if (typeof propertyValue === \"string\" &&\n allowAddPixe.includes(propertyName) &&\n propertyValue.match(/[0-9]$/gi)) {\n propertyValue = propertyValue + \"px\";\n }\n return propertyValue;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (typeof property === \"string\") {\n if (value == null) {\n // 获取属性\n return DOMUtilsContext.css(element[0], property);\n }\n else {\n // 设置属性\n element.forEach(($ele) => {\n DOMUtilsContext.css($ele, property);\n });\n return;\n }\n }\n else if (typeof property === \"object\") {\n // 设置属性\n element.forEach(($ele) => {\n DOMUtilsContext.css($ele, property);\n });\n return;\n }\n else {\n }\n return;\n }\n let setStyleProperty = (propertyName, propertyValue) => {\n if (typeof propertyValue === \"string\" &&\n propertyValue.trim().endsWith(\"!important\")) {\n propertyValue = propertyValue\n .trim()\n .replace(/!important$/gi, \"\")\n .trim();\n element.style.setProperty(propertyName, propertyValue, \"important\");\n }\n else {\n propertyValue = handlePixe(propertyName, propertyValue);\n element.style.setProperty(propertyName, propertyValue);\n }\n };\n if (typeof property === \"string\") {\n if (value == null) {\n return DOMUtilsContext.windowApi.globalThis\n .getComputedStyle(element)\n .getPropertyValue(property);\n }\n else {\n setStyleProperty(property, value);\n }\n }\n else if (typeof property === \"object\") {\n for (let prop in property) {\n let value = property[prop];\n setStyleProperty(prop, value);\n }\n }\n else {\n // 其他情况\n throw new TypeError(\"property must be string or object\");\n }\n }\n text(element, text) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (text == null) {\n // 获取\n return DOMUtilsContext.text(element[0]);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.text($ele, text);\n });\n }\n return;\n }\n if (text == null) {\n return element.textContent || element.innerText;\n }\n else {\n if (text instanceof Node) {\n text = text.textContent || text.innerText;\n }\n if (\"textContent\" in element) {\n element.textContent = text;\n }\n else if (\"innerText\" in element) {\n element.innerText = text;\n }\n }\n }\n html(element, html) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (html == null) {\n // 获取\n return DOMUtilsContext.html(element[0]);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.html($ele, html);\n });\n }\n return;\n }\n if (html == null) {\n // 获取\n return element.innerHTML;\n }\n else {\n // 设置\n if (html instanceof Element) {\n html = html.innerHTML;\n }\n if (\"innerHTML\" in element) {\n DOMUtilsCommonUtils.setSafeHTML(element, html);\n }\n }\n }\n /**\n * 获取移动元素的transform偏移\n */\n getTransform(element, isShow = false) {\n let DOMUtilsContext = this;\n let transform_left = 0;\n let transform_top = 0;\n if (!(isShow || (!isShow && DOMUtilsCommonUtils.isShow(element)))) {\n /* 未显示 */\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let transformInfo = DOMUtilsContext.getTransform(element, true);\n recovery();\n return transformInfo;\n }\n let elementTransform = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element).transform;\n if (elementTransform != null &&\n elementTransform !== \"none\" &&\n elementTransform !== \"\") {\n let elementTransformSplit = elementTransform\n .match(/\\((.+)\\)/)?.[1]\n .split(\",\");\n if (elementTransformSplit) {\n transform_left = Math.abs(parseInt(elementTransformSplit[4]));\n transform_top = Math.abs(parseInt(elementTransformSplit[5]));\n }\n else {\n transform_left = 0;\n transform_top = 0;\n }\n }\n return {\n transformLeft: transform_left,\n transformTop: transform_top,\n };\n }\n val(element, value) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (value == null) {\n // 获取\n return DOMUtilsContext.val(element[0]);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.val($ele, value);\n });\n }\n return;\n }\n if (value == null) {\n // 获取\n if (element.localName === \"input\" &&\n (element.type === \"checkbox\" || element.type === \"radio\")) {\n return element.checked;\n }\n else {\n return element.value;\n }\n }\n else {\n // 设置\n if (element.localName === \"input\" &&\n (element.type === \"checkbox\" || element.type === \"radio\")) {\n element.checked = !!value;\n }\n else {\n element.value = value;\n }\n }\n }\n prop(element, propName, propValue) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n if (propValue == null) {\n // 获取\n return DOMUtilsContext.prop(element[0], propName);\n }\n else {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.prop($ele, propName, propValue);\n });\n }\n return;\n }\n if (propValue == null) {\n return Reflect.get(element, propName);\n }\n else {\n if (element instanceof Element && propName === \"innerHTML\") {\n DOMUtilsContext.html(element, propValue);\n }\n else {\n Reflect.set(element, propName, propValue);\n }\n }\n }\n /**\n * 移除元素的属性\n * @param element 目标元素\n * @param attrName 属性名\n * @example\n * // 移除元素a.xx的属性data-value\n * DOMUtils.removeAttr(document.querySelector(\"a.xx\"),\"data-value\")\n * DOMUtils.removeAttr(\"a.xx\",\"data-value\")\n * */\n removeAttr(element, attrName) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.removeAttr($ele, attrName);\n });\n return;\n }\n element.removeAttribute(attrName);\n }\n /**\n * 移除元素class名\n * @param element 目标元素\n * @param className 类名\n * @example\n * // 移除元素a.xx的className为xx\n * DOMUtils.removeClass(document.querySelector(\"a.xx\"),\"xx\")\n * DOMUtils.removeClass(\"a.xx\",\"xx\")\n */\n removeClass(element, className) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.removeClass($ele, className);\n });\n return;\n }\n if (className == null) {\n // 清空全部className\n element.className = \"\";\n }\n else {\n if (!Array.isArray(className)) {\n className = className.split(\" \");\n }\n className.forEach((itemClassName) => {\n element.classList.remove(itemClassName);\n });\n }\n }\n /**\n * 移除元素的属性\n * @param element 目标元素\n * @param propName 属性名\n * @example\n * // 移除元素a.xx的href属性\n * DOMUtils.removeProp(document.querySelector(\"a.xx\"),\"href\")\n * DOMUtils.removeProp(\"a.xx\",\"href\")\n * */\n removeProp(element, propName) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.removeProp($ele, propName);\n });\n return;\n }\n DOMUtilsCommonUtils.delete(element, propName);\n }\n /**\n * 将一个元素替换为另一个元素\n * @param element 目标元素\n * @param newElement 新元素\n * @example\n * // 替换元素a.xx为b.xx\n * DOMUtils.replaceWith(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.replaceWith(\"a.xx\",'<b class=\"xx\"></b>')\n */\n replaceWith(element, newElement) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.replaceWith($ele, newElement);\n });\n return;\n }\n if (typeof newElement === \"string\") {\n newElement = DOMUtilsContext.parseHTML(newElement, false, false);\n }\n element.parentElement.replaceChild(newElement, element);\n }\n /**\n * 给元素添加class\n * @param element 目标元素\n * @param className class名\n * @example\n * // 元素a.xx的className添加_vue_\n * DOMUtils.addClass(document.querySelector(\"a.xx\"),\"_vue_\")\n * DOMUtils.addClass(\"a.xx\",\"_vue_\")\n * */\n addClass(element, className) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.addClass($ele, className);\n });\n return;\n }\n if (!Array.isArray(className)) {\n className = className.split(\" \");\n }\n className.forEach((itemClassName) => {\n if (itemClassName.trim() == \"\") {\n return;\n }\n element.classList.add(itemClassName);\n });\n }\n /**\n * 判断元素是否存在className\n * @param element\n * @param className\n */\n hasClass(element, className) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return false;\n }\n if (isNodeList(element)) {\n let flag = true;\n for (let index = 0; index < element.length; index++) {\n const $ele = element[index];\n flag = flag && DOMUtilsContext.hasClass($ele, className);\n }\n return flag;\n }\n if (!element?.classList) {\n return false;\n }\n if (!Array.isArray(className)) {\n className = className.split(\" \");\n }\n for (let index = 0; index < className.length; index++) {\n const item = className[index].trim();\n if (!element.classList.contains(item)) {\n return false;\n }\n }\n return true;\n }\n /**\n * 函数在元素内部末尾添加子元素或HTML字符串\n * @param element 目标元素\n * @param content 子元素或HTML字符串\n * @example\n * // 元素a.xx的内部末尾添加一个元素\n * DOMUtils.append(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.append(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n append(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.append($ele, content);\n });\n return;\n }\n function elementAppendChild(ele, text) {\n if (typeof content === \"string\") {\n ele.insertAdjacentHTML(\"beforeend\", DOMUtilsCommonUtils.getSafeHTML(text));\n }\n else {\n ele.appendChild(text);\n }\n }\n if (Array.isArray(content) || content instanceof NodeList) {\n /* 数组 */\n let fragment = DOMUtilsContext.windowApi.document.createDocumentFragment();\n content.forEach((ele) => {\n if (typeof ele === \"string\") {\n ele = DOMUtilsContext.parseHTML(ele, true, false);\n }\n fragment.appendChild(ele);\n });\n element.appendChild(fragment);\n }\n else {\n elementAppendChild(element, content);\n }\n }\n /**\n * 函数 在元素内部开头添加子元素或HTML字符串\n * @param element 目标元素\n * @param content 子元素或HTML字符串\n * @example\n * // 元素a.xx内部开头添加一个元素\n * DOMUtils.prepend(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.prepend(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n prepend(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.prepend($ele, content);\n });\n return;\n }\n if (typeof content === \"string\") {\n element.insertAdjacentHTML(\"afterbegin\", DOMUtilsCommonUtils.getSafeHTML(content));\n }\n else {\n let $firstChild = element.firstChild;\n if ($firstChild == null) {\n element.prepend(content);\n }\n else {\n element.insertBefore(content, element.firstChild);\n }\n }\n }\n /**\n * 在元素后面添加兄弟元素或HTML字符串\n * @param element 目标元素\n * @param content 兄弟元素或HTML字符串\n * @example\n * // 元素a.xx后面添加一个元素\n * DOMUtils.after(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.after(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n after(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.after($ele, content);\n });\n return;\n }\n if (typeof content === \"string\") {\n element.insertAdjacentHTML(\"afterend\", DOMUtilsCommonUtils.getSafeHTML(content));\n }\n else {\n let $parent = element.parentElement;\n let $nextSlibling = element.nextSibling;\n if (!$parent || $nextSlibling) {\n // 任意一个不行\n element.after(content);\n }\n else {\n element.parentElement.insertBefore(content, element.nextSibling);\n }\n }\n }\n /**\n * 在元素前面添加兄弟元素或HTML字符串\n * @param element 目标元素\n * @param content 兄弟元素或HTML字符串\n * @example\n * // 元素a.xx前面添加一个元素\n * DOMUtils.before(document.querySelector(\"a.xx\"),document.querySelector(\"b.xx\"))\n * DOMUtils.before(\"a.xx\",\"'<b class=\"xx\"></b>\")\n * */\n before(element, content) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.before($ele, content);\n });\n return;\n }\n if (typeof content === \"string\") {\n element.insertAdjacentHTML(\"beforebegin\", DOMUtilsCommonUtils.getSafeHTML(content));\n }\n else {\n let $parent = element.parentElement;\n if (!$parent) {\n element.before(content);\n }\n else {\n $parent.insertBefore(content, element);\n }\n }\n }\n /**\n * 移除元素\n * @param element 目标元素\n * @example\n * // 元素a.xx前面添加一个元素\n * DOMUtils.remove(document.querySelector(\"a.xx\"))\n * DOMUtils.remove(document.querySelectorAll(\"a.xx\"))\n * DOMUtils.remove(\"a.xx\")\n * */\n remove(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n element.forEach(($ele) => {\n DOMUtilsContext.remove($ele);\n });\n return;\n }\n element.remove();\n }\n /**\n * 移除元素的所有子元素\n * @param element 目标元素\n * @example\n * // 移除元素a.xx元素的所有子元素\n * DOMUtils.empty(document.querySelector(\"a.xx\"))\n * DOMUtils.empty(\"a.xx\")\n * */\n empty(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.empty($ele);\n });\n return;\n }\n DOMUtilsContext.html(element, \"\");\n }\n /**\n * 获取元素相对于文档的偏移坐标(加上文档的滚动条)\n * @param element 目标元素\n * @example\n * // 获取元素a.xx的对于文档的偏移坐标\n * DOMUtils.offset(document.querySelector(\"a.xx\"))\n * DOMUtils.offset(\"a.xx\")\n * > 0\n */\n offset(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n let rect = element.getBoundingClientRect();\n return {\n /** y轴偏移 */\n top: rect.top + DOMUtilsContext.windowApi.globalThis.scrollY,\n /** x轴偏移 */\n left: rect.left + DOMUtilsContext.windowApi.globalThis.scrollX,\n };\n }\n width(element, isShow = false) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.document.documentElement\n .clientWidth;\n }\n if (element.nodeType === 9) {\n /* Document文档节点 */\n element = element;\n return Math.max(element.body.scrollWidth, element.documentElement.scrollWidth, element.body.offsetWidth, element.documentElement.offsetWidth, element.documentElement.clientWidth);\n }\n if (isShow ||\n (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n /* 已显示 */\n /* 不从style中获取对应的宽度,因为可能使用了class定义了width !important */\n element = element;\n /* 如果element.style.width为空 则从css里面获取是否定义了width信息如果定义了 则读取css里面定义的宽度width */\n if (parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"width\").toString()) > 0) {\n return parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"width\").toString());\n }\n /* 如果从css里获取到的值不是大于0 可能是auto 则通过offsetWidth来进行计算 */\n if (element.offsetWidth > 0) {\n let borderLeftWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderLeftWidth\");\n let borderRightWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderRightWidth\");\n let paddingLeft = DOMUtilsCommonUtils.getStyleValue(element, \"paddingLeft\");\n let paddingRight = DOMUtilsCommonUtils.getStyleValue(element, \"paddingRight\");\n let backHeight = parseFloat(element.offsetWidth.toString()) -\n parseFloat(borderLeftWidth.toString()) -\n parseFloat(borderRightWidth.toString()) -\n parseFloat(paddingLeft.toString()) -\n parseFloat(paddingRight.toString());\n return parseFloat(backHeight.toString());\n }\n return 0;\n }\n else {\n /* 未显示 */\n element = element;\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let width = DOMUtilsContext.width(element, true);\n recovery();\n return width;\n }\n }\n height(element, isShow = false) {\n let DOMUtilsContext = this;\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.document.documentElement\n .clientHeight;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n // @ts-ignore\n return;\n }\n if (element.nodeType === 9) {\n element = element;\n /* Document文档节点 */\n return Math.max(element.body.scrollHeight, element.documentElement.scrollHeight, element.body.offsetHeight, element.documentElement.offsetHeight, element.documentElement.clientHeight);\n }\n if (isShow ||\n (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n element = element;\n /* 已显示 */\n /* 从style中获取对应的高度,因为可能使用了class定义了width !important */\n /* 如果element.style.height为空 则从css里面获取是否定义了height信息如果定义了 则读取css里面定义的高度height */\n if (parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"height\").toString()) > 0) {\n return parseFloat(DOMUtilsCommonUtils.getStyleValue(element, \"height\").toString());\n }\n /* 如果从css里获取到的值不是大于0 可能是auto 则通过offsetHeight来进行计算 */\n if (element.offsetHeight > 0) {\n let borderTopWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderTopWidth\");\n let borderBottomWidth = DOMUtilsCommonUtils.getStyleValue(element, \"borderBottomWidth\");\n let paddingTop = DOMUtilsCommonUtils.getStyleValue(element, \"paddingTop\");\n let paddingBottom = DOMUtilsCommonUtils.getStyleValue(element, \"paddingBottom\");\n let backHeight = parseFloat(element.offsetHeight.toString()) -\n parseFloat(borderTopWidth.toString()) -\n parseFloat(borderBottomWidth.toString()) -\n parseFloat(paddingTop.toString()) -\n parseFloat(paddingBottom.toString());\n return parseFloat(backHeight.toString());\n }\n return 0;\n }\n else {\n /* 未显示 */\n element = element;\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let height = DOMUtilsContext.height(element, true);\n recovery();\n return height;\n }\n }\n outerWidth(element, isShow = false) {\n let DOMUtilsContext = this;\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.innerWidth;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n // @ts-ignore\n return;\n }\n element = element;\n if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);\n let marginLeft = DOMUtilsCommonUtils.getStyleValue(style, \"marginLeft\");\n let marginRight = DOMUtilsCommonUtils.getStyleValue(style, \"marginRight\");\n return element.offsetWidth + marginLeft + marginRight;\n }\n else {\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let outerWidth = DOMUtilsContext.outerWidth(element, true);\n recovery();\n return outerWidth;\n }\n }\n outerHeight(element, isShow = false) {\n let DOMUtilsContext = this;\n if (DOMUtilsCommonUtils.isWin(element)) {\n return DOMUtilsContext.windowApi.window.innerHeight;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n // @ts-ignore\n return;\n }\n element = element;\n if (isShow || (!isShow && DOMUtilsCommonUtils.isShow(element))) {\n let style = DOMUtilsContext.windowApi.globalThis.getComputedStyle(element, null);\n let marginTop = DOMUtilsCommonUtils.getStyleValue(style, \"marginTop\");\n let marginBottom = DOMUtilsCommonUtils.getStyleValue(style, \"marginBottom\");\n return element.offsetHeight + marginTop + marginBottom;\n }\n else {\n let { recovery } = DOMUtilsCommonUtils.showElement(element);\n let outerHeight = DOMUtilsContext.outerHeight(element, true);\n recovery();\n return outerHeight;\n }\n }\n /**\n * 在一定时间内改变元素的样式属性,实现动画效果\n * @param element 需要进行动画的元素\n * @param styles 动画结束时元素的样式属性\n * @param duration 动画持续时间,单位为毫秒\n * @param callback 动画结束后执行的函数\n * @example\n * // 监听元素a.xx的从显示变为隐藏\n * DOMUtils.animate(document.querySelector(\"a.xx\"),{ top:100},1000,function(){\n * console.log(\"已往上位移100px\")\n * })\n */\n animate(element, styles, duration = 1000, callback = null) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.animate($ele, styles, duration, callback);\n });\n return;\n }\n if (typeof duration !== \"number\" || duration <= 0) {\n throw new TypeError(\"duration must be a positive number\");\n }\n if (typeof callback !== \"function\" && callback !== void 0) {\n throw new TypeError(\"callback must be a function or null\");\n }\n if (typeof styles !== \"object\" || styles === void 0) {\n throw new TypeError(\"styles must be an object\");\n }\n if (Object.keys(styles).length === 0) {\n throw new Error(\"styles must contain at least one property\");\n }\n let start = performance.now();\n let from = {};\n let to = {};\n for (let prop in styles) {\n from[prop] =\n element.style[prop] ||\n DOMUtilsContext.windowApi.globalThis.getComputedStyle(element)[prop];\n to[prop] = styles[prop];\n }\n let timer = setInterval(function () {\n let timePassed = performance.now() - start;\n let progress = timePassed / duration;\n if (progress > 1) {\n progress = 1;\n }\n for (let prop in styles) {\n element.style[prop] =\n from[prop] + (to[prop] - from[prop]) * progress + \"px\";\n }\n if (progress === 1) {\n clearInterval(timer);\n if (callback) {\n callback();\n }\n }\n }, 10);\n }\n /**\n * 将一个元素包裹在指定的HTML元素中\n * @param element 要包裹的元素\n * @param wrapperHTML 要包裹的HTML元素的字符串表示形式\n * @example\n * // 将a.xx元素外面包裹一层div\n * DOMUtils.wrap(document.querySelector(\"a.xx\"),\"<div></div>\")\n */\n wrap(element, wrapperHTML) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.wrap($ele, wrapperHTML);\n });\n return;\n }\n element = element;\n // 创建一个新的div元素,并将wrapperHTML作为其innerHTML\n let wrapper = DOMUtilsContext.windowApi.document.createElement(\"div\");\n DOMUtilsContext.html(wrapper, wrapperHTML);\n let wrapperFirstChild = wrapper.firstChild;\n // 将要包裹的元素插入目标元素前面\n let parentElement = element.parentElement;\n parentElement.insertBefore(wrapperFirstChild, element);\n // 将要包裹的元素移动到wrapper中\n wrapperFirstChild.appendChild(element);\n }\n prev(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n return element.previousElementSibling;\n }\n next(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n return element.nextElementSibling;\n }\n /**\n * 取消挂载在window下的DOMUtils并返回DOMUtils\n * @example\n * let DOMUtils = window.DOMUtils.noConflict()\n */\n noConflict() {\n let DOMUtilsContext = this;\n if (DOMUtilsContext.windowApi.window.DOMUtils) {\n DOMUtilsCommonUtils.delete(window, \"DOMUtils\");\n }\n DOMUtilsContext.windowApi.window.DOMUtils = this;\n return this;\n }\n siblings(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n return Array.from(element.parentElement\n .children).filter((child) => child !== element);\n }\n /**\n * 获取当前元素的父元素\n * @param element 当前元素\n * @returns 父元素\n * @example\n * // 获取a.xx元素的父元素\n * DOMUtils.parent(document.querySelector(\"a.xx\"))\n * DOMUtils.parent(\"a.xx\")\n * > <div ...>....</div>\n */\n parent(element) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selector(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n let resultArray = [];\n element.forEach(($ele) => {\n resultArray.push(DOMUtilsContext.parent($ele));\n });\n return resultArray;\n }\n else {\n return element.parentElement;\n }\n }\n parseHTML(html, useParser = false, isComplete = false) {\n let DOMUtilsContext = this;\n // 去除html前后的空格\n html = html.trim();\n function parseHTMLByDOMParser() {\n let parser = new DOMParser();\n if (isComplete) {\n return parser.parseFromString(html, \"text/html\");\n }\n else {\n return parser.parseFromString(html, \"text/html\").body.firstChild;\n }\n }\n function parseHTMLByCreateDom() {\n let tempDIV = DOMUtilsContext.windowApi.document.createElement(\"div\");\n DOMUtilsContext.html(tempDIV, html);\n if (isComplete) {\n return tempDIV;\n }\n else {\n return tempDIV.firstChild;\n }\n }\n if (useParser) {\n return parseHTMLByDOMParser();\n }\n else {\n return parseHTMLByCreateDom();\n }\n }\n /**\n * 序列化表单元素\n * @param $form 表单元素\n * @example\n * DOMUtils.serialize(document.querySelector(\"form\"))\n * > xxx=xxx&aaa=\n */\n serialize($form) {\n const elements = $form.elements;\n let serializedArray = [];\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n if (element.name &&\n !element.disabled &&\n (element.checked ||\n [\n \"text\",\n \"hidden\",\n \"password\",\n \"textarea\",\n \"select-one\",\n \"select-multiple\",\n ].includes(element.type))) {\n if (element.type === \"select-multiple\") {\n for (let j = 0; j < element.options.length; j++) {\n if (element.options[j].selected) {\n serializedArray.push({\n name: element.name,\n value: element.options[j].value,\n });\n }\n }\n }\n else {\n serializedArray.push({ name: element.name, value: element.value });\n }\n }\n }\n return serializedArray\n .map((item) => `${encodeURIComponent(item.name)}=${encodeURIComponent(item.value)}`)\n .join(\"&\");\n }\n /**\n * 显示元素\n * @param target 当前元素\n * @param checkVisiblie 是否检测元素是否显示\n * + true (默认)如果检测到还未显示,则强制使用display: unset !important;\n * + false 不检测,直接设置display属性为空\n * @example\n * // 显示a.xx元素\n * DOMUtils.show(document.querySelector(\"a.xx\"))\n * DOMUtils.show(document.querySelectorAll(\"a.xx\"))\n * DOMUtils.show(\"a.xx\")\n */\n show(target, checkVisiblie = true) {\n let DOMUtilsContext = this;\n if (target == null) {\n return;\n }\n if (typeof target === \"string\") {\n target = DOMUtilsContext.selectorAll(target);\n }\n if (target instanceof NodeList || target instanceof Array) {\n target = target;\n for (const element of target) {\n DOMUtilsContext.show(element, checkVisiblie);\n }\n }\n else {\n target = target;\n target.style.display = \"\";\n if (checkVisiblie) {\n if (!DOMUtilsCommonUtils.isShow(target)) {\n /* 仍然是不显示,尝试使用强覆盖 */\n target.style.setProperty(\"display\", \"unset\", \"important\");\n }\n }\n }\n }\n /**\n * 隐藏元素\n * @param target 当前元素\n * @param checkVisiblie 是否检测元素是否显示\n * + true (默认)如果检测到显示,则强制使用display: none !important;\n * + false 不检测,直接设置display属性为none\n * @example\n * // 隐藏a.xx元素\n * DOMUtils.hide(document.querySelector(\"a.xx\"))\n * DOMUtils.hide(document.querySelectorAll(\"a.xx\"))\n * DOMUtils.hide(\"a.xx\")\n */\n hide(target, checkVisiblie = true) {\n let DOMUtilsContext = this;\n if (target == null) {\n return;\n }\n if (typeof target === \"string\") {\n target = DOMUtilsContext.selectorAll(target);\n }\n if (target instanceof NodeList || target instanceof Array) {\n target = target;\n for (const element of target) {\n DOMUtilsContext.hide(element, checkVisiblie);\n }\n }\n else {\n target = target;\n target.style.display = \"none\";\n if (checkVisiblie) {\n if (DOMUtilsCommonUtils.isShow(target)) {\n /* 仍然是显示,尝试使用强覆盖 */\n target.style.setProperty(\"display\", \"none\", \"important\");\n }\n }\n }\n }\n /**\n * 淡入元素\n * @param element 当前元素\n * @param duration 动画持续时间(毫秒),默认400毫秒\n * @param callback 动画结束的回调\n * @example\n * // 元素a.xx淡入\n * DOMUtils.fadeIn(document.querySelector(\"a.xx\"),2500,()=>{\n * console.log(\"淡入完毕\");\n * })\n * DOMUtils.fadeIn(\"a.xx\",undefined,()=>{\n * console.log(\"淡入完毕\");\n * })\n */\n fadeIn(element, duration = 400, callback) {\n if (element == null) {\n return;\n }\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.fadeIn($ele, duration, callback);\n });\n return;\n }\n element.style.opacity = \"0\";\n element.style.display = \"\";\n let start = null;\n let timer = null;\n function step(timestamp) {\n if (!start)\n start = timestamp;\n let progress = timestamp - start;\n element = element;\n element.style.opacity = Math.min(progress / duration, 1).toString();\n if (progress < duration) {\n DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n else {\n if (callback && typeof callback === \"function\") {\n callback();\n }\n DOMUtilsContext.windowApi.window.cancelAnimationFrame(timer);\n }\n }\n timer = DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n /**\n * 淡出元素\n * @param element 当前元素\n * @param duration 动画持续时间(毫秒),默认400毫秒\n * @param callback 动画结束的回调\n * @example\n * // 元素a.xx淡出\n * DOMUtils.fadeOut(document.querySelector(\"a.xx\"),2500,()=>{\n * console.log(\"淡出完毕\");\n * })\n * DOMUtils.fadeOut(\"a.xx\",undefined,()=>{\n * console.log(\"淡出完毕\");\n * })\n */\n fadeOut(element, duration = 400, callback) {\n let DOMUtilsContext = this;\n if (element == null) {\n return;\n }\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.fadeOut($ele, duration, callback);\n });\n return;\n }\n element.style.opacity = \"1\";\n let start = null;\n let timer = null;\n function step(timestamp) {\n if (!start)\n start = timestamp;\n let progress = timestamp - start;\n element = element;\n element.style.opacity = Math.max(1 - progress / duration, 0).toString();\n if (progress < duration) {\n DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n else {\n element.style.display = \"none\";\n if (typeof callback === \"function\") {\n callback();\n }\n DOMUtilsContext.windowApi.window.cancelAnimationFrame(timer);\n }\n }\n timer = DOMUtilsContext.windowApi.window.requestAnimationFrame(step);\n }\n /**\n * 切换元素的显示和隐藏状态\n * @param element 当前元素\n * @param checkVisiblie 是否检测元素是否显示\n * @example\n * // 如果元素a.xx当前是隐藏,则显示,如果是显示,则隐藏\n * DOMUtils.toggle(document.querySelector(\"a.xx\"))\n * DOMUtils.toggle(\"a.xx\")\n */\n toggle(element, checkVisiblie) {\n let DOMUtilsContext = this;\n if (typeof element === \"string\") {\n element = DOMUtilsContext.selectorAll(element);\n }\n if (element == null) {\n return;\n }\n if (isNodeList(element)) {\n // 设置\n element.forEach(($ele) => {\n DOMUtilsContext.toggle($ele);\n });\n return;\n }\n if (DOMUtilsContext.windowApi.globalThis\n .getComputedStyle(element)\n .getPropertyValue(\"display\") === \"none\") {\n DOMUtilsContext.show(element, checkVisiblie);\n }\n else {\n DOMUtilsContext.hide(element, checkVisiblie);\n }\n }\n /**\n * 创建一个新的DOMUtils实例\n * @param option\n * @returns\n */\n createDOMUtils(option) {\n return new DOMUtils(option);\n }\n /**\n * 获取文字的位置信息\n * @param $input 输入框\n * @param selectionStart 起始位置\n * @param selectionEnd 结束位置\n * @example\n * DOMUtils.getTextBoundingRect(document.querySelector(\"input\"));\n */\n getTextBoundingRect($input, selectionStart, selectionEnd) {\n let DOMUtilsContext = this;\n // Basic parameter validation\n if (!$input || !(\"value\" in $input))\n return $input;\n if (selectionStart == null) {\n selectionStart = $input.selectionStart || 0;\n }\n if (selectionEnd == null) {\n selectionEnd = $input.selectionEnd || 0;\n }\n if (typeof selectionStart == \"string\")\n selectionStart = parseFloat(selectionStart);\n if (typeof selectionStart != \"number\" || isNaN(selectionStart)) {\n selectionStart = 0;\n }\n if (selectionStart < 0)\n selectionStart = 0;\n else\n selectionStart = Math.min($input.value.length, selectionStart);\n if (typeof selectionEnd == \"string\")\n selectionEnd = parseFloat(selectionEnd);\n if (typeof selectionEnd != \"number\" ||\n isNaN(selectionEnd) ||\n selectionEnd < selectionStart) {\n selectionEnd = selectionStart;\n }\n if (selectionEnd < 0)\n selectionEnd = 0;\n else\n selectionEnd = Math.min($input.value.length, selectionEnd);\n // If available (thus IE), use the createTextRange method\n // @ts-ignore\n if (typeof $input.createTextRange == \"function\") {\n let range = $input.createTextRange();\n range.collapse(true);\n range.moveStart(\"character\", selectionStart);\n range.moveEnd(\"character\", selectionEnd - selectionStart);\n return range.getBoundingClientRect();\n }\n // createTextRange is not supported, create a fake text range\n let offset = getInputOffset(), topPos = offset.top, leftPos = offset.left, width = getInputCSS(\"width\", true), height = getInputCSS(\"height\", true);\n // Styles to simulate a node in an input field\n let cssDefaultStyles = \"white-space:pre;padding:0;margin:0;\", listOfModifiers = [\n \"direction\",\n \"font-family\",\n \"font-size\",\n \"font-size-adjust\",\n \"font-variant\",\n \"font-weight\",\n \"font-style\",\n \"letter-spacing\",\n \"line-height\",\n \"text-align\",\n \"text-indent\",\n \"text-transform\",\n \"word-wrap\",\n \"word-spacing\",\n ];\n topPos += getInputCSS(\"padding-top\", true);\n topPos += getInputCSS(\"border-top-width\", true);\n leftPos += getInputCSS(\"padding-left\", true);\n leftPos += getInputCSS(\"border-left-width\", true);\n leftPos += 1; //Seems to be necessary\n for (let index = 0; index < listOfModifiers.length; index++) {\n let property = listOfModifiers[index];\n // @ts-ignore\n cssDefaultStyles += property + \":\" + getInputCSS(property) + \";\";\n }\n // End of CSS variable checks\n // 不能为空,不然获取不到高度\n let text = $input.value || \"G\", textLen = text.length, fakeClone = DOMUtilsContext.windowApi.document.createElement(\"div\");\n if (selectionStart > 0)\n appendPart(0, selectionStart);\n var fakeRange = appendPart(selectionStart, selectionEnd);\n if (textLen > selectionEnd)\n appendPart(selectionEnd, textLen);\n // Styles to inherit the font styles of the element\n fakeClone.style.cssText = cssDefaultStyles;\n // Styles to position the text node at the desired position\n fakeClone.style.position = \"absolute\";\n fakeClone.style.top = topPos + \"px\";\n fakeClone.style.left = leftPos + \"px\";\n fakeClone.style.width = width + \"px\";\n fakeClone.style.height = height + \"px\";\n DOMUtilsContext.windowApi.document.body.appendChild(fakeClone);\n var returnValue = fakeRange.getBoundingClientRect(); //Get rect\n fakeClone?.parentNode?.removeChild(fakeClone); //Remove temp\n return returnValue;\n // Local functions for readability of the previous code\n /**\n *\n * @param start\n * @param end\n * @returns\n */\n function appendPart(start, end) {\n var span = DOMUtilsContext.windowApi.document.createElement(\"span\");\n span.style.cssText = cssDefaultStyles; //Force styles to prevent unexpected results\n span.textContent = text.substring(start, end);\n fakeClone.appendChild(span);\n return span;\n }\n // Computing offset position\n function getInputOffset() {\n let body = DOMUtilsContext.windowApi.document.body, win = DOMUtilsContext.windowApi.document.defaultView, docElem = DOMUtilsContext.windowApi.document.documentElement, $box = DOMUtilsContext.windowApi.document.createElement(\"div\");\n $box.style.paddingLeft = $box.style.width = \"1px\";\n body.appendChild($box);\n var isBoxModel = $box.offsetWidth == 2;\n body.removeChild($box);\n let $boxRect = $input.getBoundingClientRect();\n var clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0, scrollTop = win.pageYOffset ||\n (isBoxModel && docElem.scrollTop) ||\n body.scrollTop, scrollLeft = win.pageXOffset ||\n (isBoxModel && docElem.scrollLeft) ||\n body.scrollLeft;\n return {\n top: $boxRect.top + scrollTop - clientTop,\n left: $boxRect.left + scrollLeft - clientLeft,\n };\n }\n /**\n *\n * @param prop\n * @param isNumber\n * @returns\n */\n function getInputCSS(prop, isNumber) {\n var val = DOMUtilsContext.windowApi.document\n .defaultView.getComputedStyle($input, null)\n .getPropertyValue(prop);\n return isNumber ? parseFloat(val) : val;\n }\n }\n}\nlet domUtils = new DOMUtils();\nexport { domUtils as DOMUtils };\n"],"names":[],"mappings":"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"}
|