如何控制通过CSS模块自动生成的动态类名,或使用用户定义的过滤器或其他方法设置样式的组件



如今,许多网站通过CSS模块或样式组件自动生成动态类名。这种做法具有禁用许多用户定义的过滤器和/或脚本的不幸甚至可能是故意的恶意影响;例如,Reddit覆盖所有客户端外观更改;甚至像因果报应这样简单的事情也被强加给了用户,因为用户显然没有持久的全局标识符来禁止因果报应的显示:

Reddit代码的示例截图,显示了手头的动态类名

我认为这是独裁的,不恰当的,并且造成了可怕的用户体验。我认为网站进行这种控制是不合理的。用户究竟能做些什么来控制这些看似不可操作的动态类名?例如,是否有一种方法可以对CSS模块或样式组件使用的构建过程进行逆向工程,以便将正确的标识符注入用户定义的过滤器和/或脚本中?或者有更好的方法吗?

注意:我已经在网站管理员、用户体验和超级用户上问过这个问题,但没有得到任何像样的回应。这是路的尽头吗?还是有一位StackOverflow大师提供了可行的解决方案?

要在Reddit的评论页面上隐藏因果报应跨度,今天,您可以运行以下JavaScript:

Array.from(document.querySelectorAll('span')).filter(i => /(d+)spoint/.test(i.innerHTML)).forEach(i => i.style.display = 'none');

在这里测试
然而,它只隐藏渲染的评论上的因果报应,而不隐藏尚未加载的评论上。

要用程序打开页面上的所有"更多评论"链接,您需要运行:

Array.from(document.querySelectorAll('div')).filter(i => /moreComments-/.test(i.id)).forEach(i => i.querySelector('p').click())

根据页面上隐藏评论的数量,您需要等待一段时间,直到所有请求都得到解决并呈现所有评论。

此时,运行第一行将隐藏页面上的所有因果报应跨度。


这明天可能不会奏效,因为Reddit拥有该代码,并且有权、有能力和资源每天多次根据自己的意愿更改其内部结构、布局或设计,因此,像我和你这样的程序员想要更改其服务的渲染输出的任何微小尝试都是徒劳的。


编辑:自从我回答了你的问题后,我想就如何使用StackOverflow提供一些有用的见解。我希望你觉得它很有帮助,或者至少很有趣。

最新更新