simulate-event.js 958 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { eventList } from './shared';
  2. export function getEventObj(name, params) {
  3. const eventType = eventList.find(({ id }) => id === name)?.type ?? '';
  4. let event;
  5. switch (eventType) {
  6. case 'mouse-event':
  7. event = new MouseEvent(name, params);
  8. break;
  9. case 'focus-event':
  10. event = new FocusEvent(name, params);
  11. break;
  12. case 'touch-event':
  13. event = new TouchEvent(name, params);
  14. break;
  15. case 'keyboard-event':
  16. event = new KeyboardEvent(name, params);
  17. break;
  18. case 'wheel-event':
  19. event = new WheelEvent(name, params);
  20. break;
  21. default:
  22. event = new Event(name, params);
  23. }
  24. return event;
  25. }
  26. export default function (element, name, params) {
  27. const event = getEventObj(name, params);
  28. const useNativeEvents = ['focus', 'submit', 'blur'];
  29. if (useNativeEvents.includes(name) && element[name]) {
  30. element[name]();
  31. } else {
  32. element.dispatchEvent(event);
  33. }
  34. }