Пользователь рассказал, как ему надоело скроллить длинные ответы нейросетей и ловить уезжающий текст во время генерации. Штатная кнопка «наверх» возвращает к шапке сайта, а не к началу конкретного сообщения. Чтобы решить эту проблему, он создал около десяти userscript для ChatGPT, Qwen, DeepSeek, Claude, Gemini, Grok и Perplexity. Скрипты добавляют в угол экрана фиксированную кнопку, при клике на которую страница прокручивается к первой строке последнего ответа ассистента. Для наглядности блок на секунду подсвечивается.
Особенность реализации — работа с одностраничными приложениями (SPA). Просто повесить обработчик на загрузку страницы нельзя, поэтому скрипты используют MutationObserver для отслеживания изменений DOM. В противном случае кнопка переставала бы работать при переходе в новый диалог. Логика поиска последнего ответа различается в зависимости от платформы. ChatGPT и Claude обладают предсказуемыми data-* атрибутами, например data-message-author-role="assistant". Gemini и Grok используют веб-компоненты вроде model-response. Сложнее всего пришлось с DeepSeek, где применяются хеш-классы — сегодня класс.ds-message, а завтра может стать случайным набором букв. Для Qwen пришлось задействовать несколько фолбэков.
Помимо кнопки, скрипты скрывают элементы, которые автор считает визуальным мусором: блоки с рассуждениями (reasoning), подсказками (follow-up), дисклеймеры и кнопку «Принять предложение». В статье приведён полный код userscript для ChatGPT, который можно скопировать и использовать через Tampermonkey. Код включает как CSS-стили для скрытия элементов, так и JavaScript с MutationObserver. Хотя автор не претендует на промышленную надёжность — решения могут ломаться при обновлении интерфейсов — скрипты уже работают и могут быть доработаны сообществом.
Скрипт добавляет фиксированную кнопку, которая при клике прокручивает страницу к первой строке последнего ответа ассистента.

