@whitesev/domutils 1.9.6 → 1.9.9

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.umd.js CHANGED
@@ -4,7 +4,7 @@
4
4
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMUtils = factory());
5
5
  })(this, (function () { 'use strict';
6
6
 
7
- const version = "1.9.6";
7
+ const version = "1.9.9";
8
8
 
9
9
  class WindowApi {
10
10
  /** 默认的配置 */
@@ -541,7 +541,6 @@
541
541
  "is",
542
542
  "jquery",
543
543
  "keydown",
544
- "keypress",
545
544
  "keyup",
546
545
  "last",
547
546
  "load",
@@ -594,10 +593,7 @@
594
593
  "slideDown",
595
594
  "slideToggle",
596
595
  "slideUp",
597
- "sort",
598
- "splice",
599
596
  "text",
600
- "toArray",
601
597
  "toggle",
602
598
  "toggleClass",
603
599
  "trigger",
@@ -1631,16 +1627,6 @@
1631
1627
  // 这是存在selector的情况
1632
1628
  listenerOption = getOption(args, 4, listenerOption);
1633
1629
  }
1634
- // 是否移除所有事件
1635
- let isRemoveAll = false;
1636
- if (args.length === 2) {
1637
- // 目标函数、事件名
1638
- isRemoveAll = true;
1639
- }
1640
- else if ((args.length === 3 && typeof args[2] === "string") || Array.isArray(args[2])) {
1641
- // 目标函数、事件名、子元素选择器
1642
- isRemoveAll = true;
1643
- }
1644
1630
  if (args.length === 5 && typeof args[4] === "function" && typeof filter !== "function") {
1645
1631
  // 目标函数、事件名、回调函数、事件配置、过滤函数
1646
1632
  filter = option;
@@ -1670,7 +1656,7 @@
1670
1656
  // 事件的配置项不同
1671
1657
  flag = false;
1672
1658
  }
1673
- if (flag || isRemoveAll) {
1659
+ if (flag) {
1674
1660
  $elItem.removeEventListener(eventName, handler.handlerCallBack, handler.option);
1675
1661
  const findIndex = handlers.findIndex((item) => item === handler);
1676
1662
  if (findIndex !== -1) {
@@ -1863,35 +1849,43 @@
1863
1849
  else {
1864
1850
  $elList.push(element);
1865
1851
  }
1852
+ /**
1853
+ * 主动添加属性
1854
+ */
1855
+ const addExtraProp = (event, obj) => {
1856
+ if (event instanceof Event && typeof obj === "object" && obj != null && !Array.isArray(obj)) {
1857
+ const detailKeys = Object.keys(obj);
1858
+ detailKeys.forEach((keyName) => {
1859
+ const value = Reflect.get(obj, keyName);
1860
+ // 在event上添加属性
1861
+ Reflect.set(event, keyName, value);
1862
+ });
1863
+ }
1864
+ };
1866
1865
  let eventTypeList = [];
1866
+ /**
1867
+ * 主动传递的事件
1868
+ */
1869
+ let __event__ = null;
1867
1870
  if (Array.isArray(eventType)) {
1868
1871
  eventTypeList = eventType.filter((it) => typeof it === "string" && it.trim() !== "");
1869
1872
  }
1870
1873
  else if (typeof eventType === "string") {
1871
1874
  eventTypeList = eventType.split(" ");
1872
1875
  }
1876
+ else if (eventType instanceof Event) {
1877
+ __event__ = eventType;
1878
+ addExtraProp(__event__, extraDetails);
1879
+ }
1873
1880
  $elList.forEach(($elItem) => {
1874
1881
  /* 获取对象上的事件 */
1875
1882
  const elementEvents = Reflect.get($elItem, GlobalData.domEventSymbol) || {};
1876
- eventTypeList.forEach((eventTypeItem) => {
1877
- let event = null;
1878
- if (extraDetails && extraDetails instanceof Event) {
1879
- event = extraDetails;
1880
- }
1881
- else {
1882
- // 构造事件
1883
- event = new Event(eventTypeItem);
1884
- if (typeof extraDetails === "object" && extraDetails != null) {
1885
- const detailKeys = Object.keys(extraDetails);
1886
- detailKeys.forEach((keyName) => {
1887
- const value = Reflect.get(extraDetails, keyName);
1888
- // 在event上添加属性
1889
- Reflect.set(event, keyName, value);
1890
- });
1891
- }
1892
- }
1883
+ /**
1884
+ * 触发事件
1885
+ */
1886
+ const dispatchEvent = (event, eventTypeItem) => {
1893
1887
  if (useDispatchToTriggerEvent == false && eventTypeItem in elementEvents) {
1894
- // 直接调用监听的事件
1888
+ // 直接调用.on监听的事件
1895
1889
  elementEvents[eventTypeItem].forEach((eventsItem) => {
1896
1890
  eventsItem.handlerCallBack(event);
1897
1891
  });
@@ -1899,7 +1893,21 @@
1899
1893
  else {
1900
1894
  $elItem.dispatchEvent(event);
1901
1895
  }
1902
- });
1896
+ };
1897
+ if (__event__) {
1898
+ // 使用主动传递的事件直接触发
1899
+ const event = __event__;
1900
+ const eventTypeItem = event.type;
1901
+ dispatchEvent(event, eventTypeItem);
1902
+ }
1903
+ else {
1904
+ eventTypeList.forEach((eventTypeItem) => {
1905
+ // 构造事件
1906
+ const event = new Event(eventTypeItem);
1907
+ addExtraProp(event, extraDetails);
1908
+ dispatchEvent(event, eventTypeItem);
1909
+ });
1910
+ }
1903
1911
  });
1904
1912
  }
1905
1913
  /**
@@ -2204,49 +2212,6 @@
2204
2212
  }
2205
2213
  return that.on(element, "keydown", null, handler, option);
2206
2214
  }
2207
- /**
2208
- * 当按键按下时触发事件
2209
- * keydown - > keypress - > keyup
2210
- * @param element 目标
2211
- * @param handler 事件处理函数
2212
- * @param option 配置
2213
- * @example
2214
- * // 监听a.xx元素的按键按下
2215
- * DOMUtils.keypress(document.querySelector("a.xx"),()=>{
2216
- * console.log("按键按下");
2217
- * })
2218
- * DOMUtils.keypress("a.xx",()=>{
2219
- * console.log("按键按下");
2220
- * })
2221
- */
2222
- onKeypress(element, handler, option) {
2223
- const that = this;
2224
- if (element == null) {
2225
- return;
2226
- }
2227
- if (typeof element === "string") {
2228
- element = that.selectorAll(element);
2229
- }
2230
- if (CommonUtils.isNodeList(element)) {
2231
- // 设置
2232
- const listenerList = [];
2233
- element.forEach(($ele) => {
2234
- const listener = that.onKeypress($ele, handler, option);
2235
- listenerList.push(listener);
2236
- });
2237
- return {
2238
- off() {
2239
- listenerList.forEach((listener) => {
2240
- if (!listener) {
2241
- return;
2242
- }
2243
- listener.off();
2244
- });
2245
- },
2246
- };
2247
- }
2248
- return that.on(element, "keypress", null, handler, option);
2249
- }
2250
2215
  /**
2251
2216
  * 监听某个元素键盘按键事件或window全局按键事件
2252
2217
  * 按下有值的键时触发,按下Ctrl\Alt\Shift\Meta是无值键。按下先触发keydown事件,再触发keypress事件。
@@ -2310,7 +2275,7 @@
2310
2275
  搜索 170
2311
2276
  收藏 171
2312
2277
  **/
2313
- onKeyboard(element, eventName = "keypress", handler, options) {
2278
+ onKeyboard(element, eventName = "keydown", handler, options) {
2314
2279
  const that = this;
2315
2280
  if (typeof element === "string") {
2316
2281
  element = that.selectorAll(element);
@@ -2488,7 +2453,8 @@
2488
2453
  eventNameList = [eventNameList];
2489
2454
  }
2490
2455
  let option = void 0;
2491
- if (typeof args[2] === "string" || Array.isArray(args[2])) {
2456
+ if (args.length === 2) ;
2457
+ else if (typeof args[2] === "string" || Array.isArray(args[2])) {
2492
2458
  // selector
2493
2459
  selector = args[2];
2494
2460
  if (typeof args[3] === "object" && args[3] != null) {