【问题标题】:Is there a way to show all defined classNames in the Chrome developer tools?有没有办法在 Chrome 开发者工具中显示所有定义的类名?
【发布时间】:2020-10-03 22:04:24
【问题描述】:

我有一个 REACT Javascript 应用程序,它使用 CSS、SCCS 和“useStyles()”的组合动态定义大量样式。有没有一种简单的方法可以准确地查看 Chrome 开发人员工具中定义了哪些类名?

如果做不到这一点,有没有一种方法可以在我自己的代码中找到并遍历所有类,以便我可以将所有类名转储到控制台?

【问题讨论】:

  • 只检查 DOM 并查看存在的类有什么问题?
  • 定义是指脚本中某处使用的类名?还是只是项目中所有现有类名的列表?
  • 我们试图解决的核心问题是,我们编写的应用程序已经发展到包含来自不同作者的许多组件,其中一些组件具有重叠的类名和相互冲突的属性。根据我们通过应用程序所采用的路径,我们最终会为给定的 className 获得完全不同的样式,并且为了帮助协调差异,我们想要一种通过应用程序在不同点检查所有 classNames 的方法,所以我们可以查明发生了什么变化以及发生在哪里。

标签: javascript reactjs google-chrome


【解决方案1】:

不幸的是,我不知道如何通过 Chome Dev Tools 做到这一点。

有没有一种方法可以找到并遍历我自己代码中的所有类,以便我可以将所有类名转储到控制台?

这样的东西(或以适合您的方式格式化数据的变体)应该为您提供所有类名:

function getAllClasses() {
    // get all the tags
    const allTagsArray = [...document.getElementsByTagName("*")];

    // get a flattened list of each tag's classList
    const allClasses = allTagsArray.map(tag => [...tag.classList]).flat();

    // get a Set of those classes to remove duplicates
    const uniqueClasses = new Set(allClasses);

    // sort alphabetically and join all the classes by newline for display/readability
    const allUniqueClassesJoinedByNewline = [...uniqueClasses].sort().join('\n');

    console.log(allUniqueClassesJoinedByNewline);
}

getAllClasses()

【讨论】:

  • 谢谢 - 这正是我想要的!
  • 对你的答案稍作重构之后;您可以复制这行代码并在开发工具的控制台中执行它:[...new Set([...document.getElementsByTagName("*")].map(tag => [...tag.classList]).flat())].sort().join('\n')
猜你喜欢
  • 1970-01-01
  • 2016-12-13
  • 2022-01-23
  • 2014-05-19
  • 2015-10-29
  • 2014-09-21
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
相关资源
最近更新 更多