Boosty Title Modifier

Добавляет время поста в заголовок *вкладки*

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

作者
Идзуми Сэна
日安装量
0
总安装量
14
评分
0 0 0
版本
0.45
创建于
2023-12-24
更新于
2025-11-04
大小
15.2 KB
许可证
暂无
适用于

Скрипт предназначен для работы на сайте boosty.to. Его основная задача — модификация заголовка вкладки браузера (<title>) при просмотре страницы конкретного поста. Скрипт извлекает дату и время публикации поста, форматирует их в стандартизированный вид (ГГГГ.ММ.ДД ЧЧ ММ) и добавляет эту информацию в начало заголовка. Это обеспечивает более информативное название вкладки, что особенно полезно при одновременной работе с несколькими постами.

Ключевые функции

Скрипт построен на архитектуре двух наблюдателей (MutationObserver), которую можно описать как "Искатель" и "Защитник".

  1. Парсинг и форматирование даты (parseBoostyDate):

    • Вспомогательная функция, которая принимает строковое представление даты, используемое на Boosty (например, "15 окт 2024, в 14:30").
    • Она преобразует эту строку в единый числовой формат ГГГГ.ММ.ДД ЧЧ ММ (например, 2024.10.15 14 30), используя внутренний словарь для конвертации названий месяцев.
  2. Наблюдатель за контентом ("Искатель" - startBodyObserver):

    • Это основной MutationObserver, который следит за изменениями во всем document.body. Он необходим для работы в среде одностраничного приложения (SPA), коим является Boosty.
    • Обнаружение страницы поста: При любом изменении DOM, "Искатель" проверяет наличие первого поста в основной колонке и наличие у него заголовка <h1> (включая заголовок в блоке платной подписки).
    • Установка заголовка: Если <h1> найден и data-post-id изменился (т.е. пользователь перешел на новый пост), скрипт:
      1. Извлекает дату (getPostTime) и заголовок (h1Title.textContent).
      2. Форматирует дату с помощью parseBoostyDate.
      3. Формирует новую строку currentFormattedTitle (например, "2024.10.15 14 30 - Название Поста").
      4. Устанавливает document.title в это новое значение.
      5. Активирует "Защитника" (startTitleObserver) для охраны этого нового заголовка.
    • Сброс состояния: Если <h1> не найден (т.е. пользователь ушел со страницы поста в ленту или настройки), "Искатель" отключает "Защитника" и сбрасывает внутреннее состояние (currentPostId = null), возвращая управление заголовком вкладки сайту.
  3. Наблюдатель за заголовком ("Защитник" - startTitleObserver):

    • Это второй, вспомогательный MutationObserver, который следит исключительно за тегом <title>.
    • Проблема: В SPA-приложениях, фреймворк сайта (в данном случае Boosty) часто пытается "исправить" заголовок вкладки при малейших внутренних событиях, сбрасывая его к значению по умолчанию (например, "Название Поста - Имя Автора").
    • Решение: Как только "Защитник" обнаруживает, что document.title был изменен не на то значение, которое установил скрипт (currentFormattedTitle), он немедленно и принудительно возвращает document.title к сохраненному значению. Это гарантирует, что отформатированный заголовок остается во вкладке до тех пор, пока пользователь не покинет страницу поста.

Как использовать

  1. Перейдите на сайт boosty.to и откройте страницу любого автора.
  2. При просмотре ленты автора заголовок вкладки будет стандартным (например, "Блог Автора").
  3. Откройте любой пост (перейдите на его индивидуальную страницу).
  4. Скрипт немедленно сработает, найдет дату поста, и заголовок вкладки изменится.

Особенности

  • Архитектура "Искатель-Защитник": Использование двух MutationObserver является ключевой особенностью. "Искатель" (bodyObserver) реагирует на навигацию в SPA, а "Защитник" (titleObserver) борется с попытками SPA сбросить установленное скриптом значение.
  • Управление состоянием: Скрипт использует глобальные переменные (currentPostId, currentFormattedTitle) как простую машину состояний, чтобы понимать, находится ли он в данный момент на странице поста и нужно ли ему "защищать" заголовок.
  • Адаптивность к SPA: Скрипт корректно обрабатывает навигацию внутри сайта (переход из ленты на пост и обратно) без необходимости полной перезагрузки страницы.
  • @grant none: Скрипт работает в режиме @grant none, что означает его выполнение в контексте самой страницы. Это позволяет ему эффективно отслеживать изменения DOM и document.title без задержек.

Пример выходных данных

Скрипт не генерирует видимый контент на странице. Его единственный результат — изменение текста во вкладке браузера.

Если оригинальный заголовок вкладки Boosty:

Настоящая история | Авторский блог