Greasy Fork 支持简体中文。

CSS rules utilities

function allowing to find or change the CSS rule(s) applied to an element

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.cn-greasyfork.org/scripts/394970/768785/CSS%20rules%20utilities.js

  1. // ==UserScript==
  2. // @name CSS rules utilities
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.4
  5. // @description functions allowing to get the CSS rules applied to an element
  6. // @author CoStiC
  7. // @match *://*/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. function findCssRules(el) {
  12. var sheets = document.styleSheets, ret = [];
  13. el.matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector;
  14. for (var i in sheets) {
  15. var rules = sheets[i].rules || sheets[i].cssRules;
  16. for (var r in rules) {
  17. if (el.matches(rules[r].selectorText)) {
  18. ret.push(rules[r].cssText);
  19. }
  20. }
  21. }
  22. return ret;
  23. }
  24.  
  25. function modCssRules(el, newRule, frDoc) {
  26. if (!frDoc || (frDoc === window)) frDoc = window.document;
  27. let elHover = "",
  28. sheets = frDoc.styleSheets;
  29.  
  30. if (el !== null) {
  31. el.matches = el.matches || el.webkitMatchesSelector || el.mozMatchesSelector || el.msMatchesSelector || el.oMatchesSelector;
  32. for (let sheet of sheets) {
  33. var rules = sheet.rules || sheet.cssRules;
  34. for (let rule of rules) {
  35. if (rule.type === 1) {
  36. if (el.matches(rule.selectorText)) {
  37.  
  38. for (let newProp in newRule.cssNormal) {
  39. rule.style[newProp] = newRule.cssNormal[newProp];
  40. }
  41.  
  42. if (typeof newRule.cssHover !== 'undefined') {
  43. var rul = "";
  44. for (let propHover in newRule.cssHover) {
  45. rul += `${propHover}:${newRule.cssHover[propHover]} !important;`;
  46. };
  47. elHover = `${rules[rule].selectorText}:hover{${rul}}`;
  48. }
  49. } else {};
  50. }
  51. }
  52. }
  53. }
  54.  
  55. if (elHover !== "") {
  56. let newHoverStyle = document.createElement('style'),
  57. hoverRule = document.createTextNode(elHover);
  58. newHoverStyle.appendChild(hoverRule);
  59. document.head.appendChild(newHoverStyle)
  60. //sheets[sheets.length - 1].insertRule(elHover);
  61. };
  62. }