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