ExEv

(Ex)tended (Ev)ents - provides an API for some missing on-x events

当前为 2020-05-23 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/403996/808391/ExEv.js

  1. // ==UserScript==
  2. // @name ExEv
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1.1
  5. // @description (Ex)tended (Ev)ents - provides an API for some missing on-x events
  6. // @author github.com/akuankka128
  7. // @match http*://*/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. /* jshint esversion: 6 */
  12.  
  13. (function(root) {
  14. 'use strict';
  15.  
  16. let events = new Map();
  17. events.on = (event, handler) => events.set(event, handler);
  18. events.off = event => events.delete(event);
  19. events.emit = (event, ...args) => {
  20. let e = events.get(event);
  21. if(!e) return false;
  22. e(...args);
  23. return true;
  24. };
  25.  
  26. root.events = events;
  27.  
  28. let observer = new MutationObserver(function(mutations) {
  29. mutations.forEach(m => {
  30. if(m.target instanceof HTMLHeadElement) {
  31. events.emit('headloaded');
  32. events.off('headloaded');
  33. } else if(m.target instanceof HTMLBodyElement) {
  34. events.emit('bodyloaded');
  35. events.off('bodyloaded');
  36. }
  37. });
  38. });
  39.  
  40. observer.observe(document, {childList:true,subtree:true});
  41. })(document);