Как управлять динамическими именами классов, которые автоматически генерируются с помощью модулей CSS или стилевых компонентов с помощью пользовательских фильтров или других методов - PullRequest
0 голосов
/ 31 января 2019

Многие веб-сайты сегодня автоматически генерируют динамические имена классов с помощью CSS-модулей или стилевых компонентов.Эта практика имеет неудачный и, возможно, даже намеренно вредоносный эффект, заключающийся в отключении многих пользовательских фильтров и / или сценариев;Например, Reddit отменяет все виды косметических изменений на стороне клиента;даже простые вещи, такие как карма, навязываются пользователю из-за того, что, очевидно, нет постоянного глобального идентификатора, который пользователь мог бы использовать для запрета отображения кармы:

Пример снимка экрана кода Reddit, иллюстрирующийимена динамических классов под рукой

Я думаю, что это авторитарно, неуместно и создает ужасный пользовательский опыт.Я не считаю разумным, что веб-сайты должны осуществлять такой контроль.Что именно может сделать пользователь для управления этими, казалось бы, не манипулируемыми именами динамических классов?Например, есть ли способ обратного инжиниринга процессов сборки, используемых модулями CSS или стилевыми компонентами, чтобы затем внедрить надлежащие идентификаторы в определяемый пользователем фильтр и / или скрипт?Или есть лучшие методы?

Примечание. Я уже задавал и не получил достойного ответа на этот вопрос в Webmaster, UX и SuperUser.Это конец дороги?Или есть гуру StackOverflow с работоспособным решением?

1 Ответ

0 голосов
/ 31 января 2019

Чтобы скрыть кармы на странице комментариев на Reddit, сегодня вы можете запустить следующий JavaScript:

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

Протестировано здесь .
Однако, оно скрывается толькоКарма на предоставленных комментариях, а не на тех, которые еще не загружены.

Чтобы программно открыть все ссылки "moreComments" на странице, вам нужно выполнить:

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

В зависимости от количества скрытых комментариев на странице вам нужно будет подождать, пока все запросы не будут обработаны и все комментарии не будут обработаны.

В этот момент при запуске первой строки будут скрыты все пролеты кармы на странице..


И это может не сработать завтра, так как Reddit владеет этим кодом и имеет право, возможность и ресурсы изменять свою внутреннюю структуру, структуру или дизайн по своему усмотрению, любое количество раздень, так что любые ничтожные попытки изменить результат представления их услуг со стороны кодеров, таких как я и вы, остаются тщетными.


Редактировать: С тех пор, как я ответил на вашивопрос, который я хотел бы дать некоторое полезное представление о том, как подойти к StackOverflow.Надеюсь, вы найдете это полезным или, по крайней мере, интересным.

...