dispatch-event.js 625 B

12345678910111213141516171819202122232425262728293031
  1. module.exports = dispatchEvent
  2. function dispatchEvent(ev) {
  3. var elem = this
  4. var type = ev.type
  5. if (!ev.target) {
  6. ev.target = elem
  7. }
  8. if (!elem.listeners) {
  9. elem.listeners = {}
  10. }
  11. var listeners = elem.listeners[type]
  12. if (listeners) {
  13. return listeners.forEach(function (listener) {
  14. ev.currentTarget = elem
  15. if (typeof listener === 'function') {
  16. listener(ev)
  17. } else {
  18. listener.handleEvent(ev)
  19. }
  20. })
  21. }
  22. if (elem.parentNode) {
  23. elem.parentNode.dispatchEvent(ev)
  24. }
  25. }