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