findReact

Helper Fn

当前为 2024-07-27 提交的版本,查看 最新版本

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

  1. // ==UserScript==
  2. // @name findReact
  3. // @version 1.0
  4. // @description Helper Fn
  5. // @match *://*.nitrotype.com/race
  6. // @match *://*.nitrotype.com/race/*// @author Toonidy
  7. // @license MIT
  8. // @namespace https://greasyfork.org/users/1331131
  9. // ==/UserScript==
  10.  
  11. // Credit to Toonidy for this
  12. function findReact(dom, traverseUp = 0) {
  13. const key = Object.keys(dom).find((key) => key.startsWith("__reactFiber$"));
  14. const domFiber = dom[key];
  15. if (!domFiber) return null;
  16.  
  17. const getCompFiber = (fiber) => {
  18. let parentFiber = fiber?.return;
  19. while (parentFiber && typeof parentFiber.type === "string") {
  20. parentFiber = parentFiber.return;
  21. }
  22. return parentFiber;
  23. };
  24.  
  25. let compFiber = getCompFiber(domFiber);
  26. for (let i = 0; traverseUp && compFiber && i < traverseUp; i++) {
  27. compFiber = getCompFiber(compFiber);
  28. }
  29. return compFiber?.stateNode || null;
  30. }