Как без усилий пролистать историю диалога до самого начала

Я не айтишник, но немного умею гуглить и делиться полезным. Если у вас в диалоге бесконечная история переписки и рука уже устала скроллить и нажимать кнопку для подгрузки данных вверх — ловите способ, как автоматизировать этот процесс через браузер (у меня гугл хром). Уверен, можно и через телефон сделать, но это уже просите у наших светлых голов :)
Инструкция (для ПК):
- Открываем нужный диалог.
- Нажимаем F12 (или правой кнопкой мыши в любом месте -> «Просмотреть код»).
- Переходим во вкладку Console (Консоль).

- Вставьте код, приведенный ниже (под спойлером), и нажмите Enter.
- Если браузер выдает предупреждение и запрещает вставку, просто введите вручную фразуallow pasting и нажмите Enter, и после этого снова вставьте код.
(function() {
let clickCount = 0;
console.log(`Запуск… Нажимаю кнопки подгрузки.`);
const interval = setInterval(function() {
const btn = Array.from(document.querySelectorAll(`button, a, .btn`))
.find(function(el) {
return el.textContent.includes(`Показать предыдущие`) || el.id === `load_more_messages`;
});
if (btn && btn.offsetParent !== null) {
btn.click();
clickCount++;
console.log(`Нажато раз: ${clickCount}`);
} else {
clearInterval(interval);
console.log(`Загрузка завершена. Создаю HTML с цветами.`);
generateStyledHTML();
}
}, 2500);
function generateStyledHTML() {
const selectors = `.message, .msg, .chat-item, [class*='message'], .im_message_body`;
let messages = Array.from(document.querySelectorAll(selectors)).filter(function(el) {
return !el.querySelector(selectors);
});
let html = `<html><head><meta charset='UTF-8'><style>
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: #e5ddd5; padding: 20px; display: flex; flex-direction: column; }
.msg-wrapper { display: flex; flex-direction: column; margin-bottom: 10px; width: 100%; }
.msg-bubble { padding: 10px 15px; border-radius: 15px; max-width: 75%; box-shadow: 0 1px 2px rgba(0,0,0,0.15); word-wrap: break-word; position: relative; }
img { max-width: 100%; border-radius: 8px; margin-top: 8px; display: block; }
.left { align-self: flex-start; border-bottom-left-radius: 2px; }
.right { align-self: flex-end; border-bottom-right-radius: 2px; }
</style></head><body>`;
const uniqueContent = new Set();
messages.forEach(function(el) {
const text = el.innerText.trim();
const imgs = Array.from(el.querySelectorAll(`img`));
if (!text && imgs.length === 0) return;
// Защита от дублей по тексту и количеству картинок
const contentKey = text + imgs.length;
if (uniqueContent.has(contentKey)) return;
uniqueContent.add(contentKey);
// Определяем реальный цвет фона элемента
let style = window.getComputedStyle(el);
let bgColor = style.backgroundColor;
let textColor = style.color;
// Если фон прозрачный, ищем у родителя
let parent = el;
while ((bgColor === `rgba(0, 0, 0, 0)` || bgColor === `transparent`) && parent.parentElement) {
parent = parent.parentElement;
style = window.getComputedStyle(parent);
bgColor = style.backgroundColor;
textColor = style.color;
}
// Логика выравнивания: если фон белый или очень светлый — влево, иначе — вправо
const rgb = bgColor.match(/\d+/g);
let sideClass = `right`;
if (rgb && (parseInt(rgb[0]) + parseInt(rgb[1]) + parseInt(rgb[2]) > 700)) {
sideClass = `left`;
}
let imgsHtml = ``;
imgs.forEach(function(img) {
if (img.src && !img.src.startsWith(`data:image/svg`)) {
imgsHtml += `<img src='${img.src}'>`;
}
});
html += `<div class='msg-wrapper'>
<div class='msg-bubble ${sideClass}' style='background-color: ${bgColor}; color: ${textColor};'>
${text.replace(/\n/g, `<br>`)}
${imgsHtml}
</div>
</div>`;
});
html += `</body></html>`;
const blob = new Blob([html], { type: `text/html` });
const url = URL.createObjectURL(blob);
// Скачивание
const a = document.createElement(`a`);
a.href = url;
a.download = `colorful_chat_history.html`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
// Открытие
const win = window.open(url, `_blank`);
if (!win) {
console.log(`Файл скачан. Для открытия в новой вкладке разрешите всплывающие окна.`);
}
}
})();
____________________________________________________________________________________
дальше можно не читать
Что сделает этот скрипт:
- Будет сам «нажимать» кнопку подгрузки каждые 2.5 секунды, пока не дойдет до самого первого сообщения.
- Автоматически уберет все «матрешки» и дубликаты (чтобы сообщения не повторялись).
- Сохранит всё в красивый HTML-файл: сообщения будут в цветных «пузырях» (как в диалоге) и с загрузкой картинок.
- После завершения файл сразу скачается в папку «Загрузки», и скрипт попытается открыть его в новой вкладке.
Теперь текст перед глазами, и по нему можно легко искать информацию через Ctrl + F. Дальше на ваше усмотрение)
Безопасно ли это?
Многие боятся вставлять сторонний код в консоль, и это правильно! Вот почему этот скрипт не опасен:
- Он работает только в вашем браузере: Код не отправляет данные на сторонние серверы. Он просто собирает текст, который и так уже загружен у вас на экране, и упаковывает его в файл.
- Никаких паролей: Скрипт не запрашивает доступ к вашему аккаунту, паролям или личным данным. Его задача — только имитировать нажатие кнопки «вверх» и копировать текст сообщений.
- Открытость: Любой, кто хоть немного понимает в коде, может прочитать его: там видно только команды поиска кнопок и сохранения текста.
- Автономность: Вы можете даже отключить интернет в момент, когда история уже подгружена, — скрипт всё равно сформирует файл, так как работает локально на вашем ПК.
Этот метод гораздо безопаснее, чем использовать сомнительные расширения из магазина Chrome, которые часто требуют доступ ко всем вашим сайтам сразу. Здесь вы видите весь процесс в консоли в реальном времени
Если у кого-то есть идеи, как улучшить код или сделать поиск еще удобнее — пишите!
Было бы отлично, если админ сделал поиск по слову, а пока спасаемся так.
Появилась улучшенная версия кода
Автоматически отсечет список контактов, ники и аватарки собеседников слева.
Всё так же:
1. Открываем нужный диалог.
2. НажимаемF12(или правой кнопкой мыши в любом месте -> «Просмотреть код»).
3. Переходим во вкладкуConsole.
4. Вставляем код, приведенныйвыше, и нажимаем Enter.
5. Если браузер выдает предупреждение и запрещает вставку, просто введите вручную фразу allow pastingи нажмите Enter, и после этого снова вставьте код.
Обычно мне не приходится что-то искать в прошлых сообщениях, так как я мало переписываюсь, но выглядит очень полезно. Спасибо, я попробую!
Главный эксперт на месте)) Отпишись потом, как тебе результат.
И конечно, если сама идея выгрузки пригодится тебе для плагина, забирай не задумываясь и встраивай к себе))
Отпишись потом, как тебе результат.
Все работает)
не задумываясь и встраивай к себе))
Вообще я думаю что это была бы хорошая дополнительная функция.
После неудачной попытки с ЧКГ, ты теперь решил примерить на себя роль Исидоры и God5. Какой упертый… мальчик.
О какой неудаче речь? Как всегда ноль внимательности)
На роль ребят не претендую. Они талантливые, всё тянули сами. Я же просто использовал ИИ и автоматизировал процесс под свои нужды и еще пары человек.
И вообще, все роли уже давно придуманы. За какое дело ни возьмись, окажется, что кто-то это уже делал. В тот момент, когда упертая… девочка захочет что-то реально сделать сама, а не просто критиковать из кустов — я буду рядом))
Слишком явно оправдываешься.
А я думал, это угроза 🤔
Я не против компании
Главное, чтобы Компания была не против Вас !!
🤣🤣🤣👬...👬...💃...👬...👬🤣🤣🤣
Так и до песенок не далеко
так Денни у Помидора хлеб отберет
Лишь бы не томатный сок
Томатный сок отбираю только я и Мэри.Не всем понять вкус напитка Богов)
Не всем понятен смысл слова «отбираю»
В моём случае позаимствованно из оригинала. Вроде бы намного проще чем казалось...
О нет...Denny.. это как же ты так взял и позволил себе опубликовать разработку? что же теперь будет? ты хоть понимаешь, что РОЛЬ разработчиков уже занята? угостите кто-нибудь пузырьком валерьяны меня.
Грешен, не ведал, что творил. Пойду покаюсь перед богами кода))
Адвокатов подвезли, разбирайте, пока свежие.
Слишком явно злишься.
Полкило пожалуйста, если свежие/сегодняшние.)
Вам задок или передок взвешать?
А они по одной цене?)
Задок дороже!
Поймите одну вещь, под самым красивым павлиньим хвостом скрывается обычная, куриная жопа.
Всё же подумайте над ценой и сделайте правильный выбор)
Вы когда-нибудь покупали говядину? Знаете принцип ценообразования? Тут примерно тоже самое.
Давайте мы не будем углубляться в азы ценообразования, налогообложения, накладных и 1с.Присутствует такой пункт как «форс-мажорные ситуации», который способен повернуть исход договорённости либо и вовсе свести их на невозможность исполнения.
Либо я приобретаю товар по одной цене и обе стороны в плюсе, либо позовите Вашего начальника)