Отключение unload-on-scroll?

Есть ли способ загружать старые сообщения на странице по мере прокрутки вниз по теме? Это мешает использованию встроенной функции поиска страницы в браузере, которая менее громоздка в использовании, чем поиск по теме в Discourse. В любом месте страницы я могу просто нажать Command-F, ввести текст и быстро найти вхождения в отрендеренном тексте. Поиск в Discourse требует, чтобы я прокрутил страницу вверх, нажал значок поиска, установил флажок «в этой теме», а затем нажал на результаты, чтобы увидеть их контекст. Каждый раз, когда я хочу попробовать другой результат, мне приходится повторять это.

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

Нажмите клавишу End на вашей клавиатуре или щёлкните/нажмите на дату в нижней части временной шкалы. Вы также можете перейти к теме внизу, нажав на время последнего сообщения или на количество сообщений.

Для этого есть специальный маршрут для печати, например

https://meta.discourse.org/t/the-state-of-javascript-on-android-in-2015-is-poor/33889/print

(нужно открыть в новой вкладке). Это загрузит до 1000 постов в представлении без JavaScript.

5 лайков

Маршрут «print» — хорошее начало, но это всё ещё не совсем то, что я искал.

В более старых версиях я мог прокручивать страницу, чтобы загрузить всю тему целиком (или только ту её часть, которая относится к определённому фрагменту), удерживать её в памяти, а затем использовать SingleFile, чтобы экспортировать архив всей темы — отображённый ровно так, как он выглядит на обычной странице форума. Это похоже на скриншот, но файл меньше, его можно прокручивать, приближать, ссылки кликабельны, изображения можно сохранить, а текст представлен именно текстом, а не пикселями. Кроме того, можно было сначала подготовить страницу: например, развернуть виджет «3 ответа», скрыть спойлеры или даже прикрепить личные заметки в виджете ответа — чтобы они отображались в архиве, но никогда не публиковались на форуме. Также можно было использовать «zapper» из uBlock Origin, чтобы удалить сообщения, не относящиеся к той части темы, которую я хотел сохранить, — сократив обсуждение до тех самых комментариев, которые мне нужны.

А потом во время обновления Discourse эта возможность пропала. Сейчас я могу получить максимум несколько сообщений за раз. Возможно, чуть больше, если отдалить масштаб просмотра настолько, насколько позволяет браузер, чтобы на экране поместилось больше сообщений.

Было бы здорово, если бы существовал способ принудительно остановить выгрузку сообщений из памяти. Например, горячая клавиша, кнопка, код Кономи — что угодно. Просто нажать что-то, чтобы временно отключить функцию JavaScript, ответственную за выгрузку сообщений, находящихся вне экрана, — но только для этой вкладки браузера.

Например, представьте, что есть тема длиной в 12 000 комментариев о групповой покупке, которая тянется годами, и где-то посреди неё люди обсуждают кошек на протяжении 100 сообщений, прежде чем вернуться к основной теме. Я мог бы прокрутить к началу ветки про кошек, нажать горячую клавишу «остановить выгрузку сообщений» в Discourse, прокрутить вниз, использовать zapper из uBlock, чтобы удалить все сообщения, не связанные с кошками, прокрутить до конца ветки про кошек, а затем нажать горячую клавишу SingleFile, чтобы сохранить DOM в файл .html.

В прошлом году мне ещё удавалось это делать; не уверен, когда это перестало работать. Возможно, это была просто ошибка, которая позволяла так работать, ведь похоже, что поведение с выгрузкой сообщений существовало уже лет десять назад. Но мне понравилась эта ошибка, и я хотел бы иногда иметь возможность её вернуть.

Я понимаю, что это заставит вкладку потреблять значительно больше ресурсов. Это не проблема. Есть сценарии, когда «больше загруженного контента в DOM» важнее, чем минимизация использования оперативной памяти.