special.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import { EventHook } from './hook';
  2. import { Util } from './util';
  3. // Prevent triggered image.load events from bubbling to window.load
  4. export var Special;
  5. (function (Special) {
  6. EventHook.register('load', {
  7. noBubble: true,
  8. });
  9. })(Special || (Special = {}));
  10. // Support: Chrome <=73+
  11. // Chrome doesn't alert on `event.preventDefault()`
  12. // as the standard mandates.
  13. (function (Special) {
  14. EventHook.register('beforeunload', {
  15. postDispatch(elem, event) {
  16. if (event.result !== undefined && event.originalEvent) {
  17. event.originalEvent.returnValue = event.result;
  18. }
  19. },
  20. });
  21. })(Special || (Special = {}));
  22. // For mouseenter/leave call the handler if related is outside the target.
  23. // NB: No relatedTarget if the mouse left/entered the browser window
  24. (function (Special) {
  25. EventHook.register('mouseenter', {
  26. delegateType: 'mouseover',
  27. bindType: 'mouseover',
  28. handle(target, event) {
  29. let ret;
  30. const related = event.relatedTarget;
  31. const handleObj = event.handleObj;
  32. if (!related || (related !== target && !Util.contains(target, related))) {
  33. event.type = handleObj.originType;
  34. ret = handleObj.handler.call(target, event);
  35. event.type = 'mouseover';
  36. }
  37. return ret;
  38. },
  39. });
  40. EventHook.register('mouseleave', {
  41. delegateType: 'mouseout',
  42. bindType: 'mouseout',
  43. handle(target, event) {
  44. let ret;
  45. const related = event.relatedTarget;
  46. const handleObj = event.handleObj;
  47. if (!related || (related !== target && !Util.contains(target, related))) {
  48. event.type = handleObj.originType;
  49. ret = handleObj.handler.call(target, event);
  50. event.type = 'mouseout';
  51. }
  52. return ret;
  53. },
  54. });
  55. })(Special || (Special = {}));
  56. //# sourceMappingURL=special.js.map