Исправлены мелкие ошибки, добавлены новые функции и дополнительные настройки.
Изменён подход к хранению настроек на сайте, доработана логика для embed-режима.
Возвращён запуск скрипта-инжектора на страницах мобильной версии YouTube.
Проверка работоспособности: SRWare Iron 31/36/49 + 360 Extreme Explorer 9/11/12/13 + Chromium 87.
На более старых версиях работоспособность НЕ гарантируется!
Во избежание проблем с работоспособностью расширения рекомендуется внимательно изучить документацию и учитывать важное примечание по настройке браузера!
Основные изменения:
- исправлена проблема некорректного открытия ссылок в новой фоновой вкладке;
Случайная ошибка, внесённая в предыдущей версии, связана с "излишней оптимизацией" условий проверки настроек. Проявлялась так: если в настройках интерфейса было ВЫКЛючено расширенное контекстное меню, новая вкладка всегда открывалась активной.
Исправлено. Теперь ссылки открываются в активной/фоновой вкладке в зависимости от настройки "Открывать ссылки в фоновой вкладке", другие настройки при этом значения не имеют.
- попутно исправлена логика автовоспроизведения в новой вкладке – зависит от фоновой/активной;
Теперь, если новая вкладка открывается в фоне (неактивна), автозапуск плейера будет выключен. И наоборот, при открытии новой активной вкладки воспроизведение ролика запускается автоматически.
- исправлена ошибка с переключением части настроек, в некоторых случаях не работало с первого раза;
В частности, не отрабатывалась сразу смена настроек автоперехода на мобильный режим, на тёмную тему и отключение автовоспроизведения следующих роликов. При этом, при восстановлении куки на сайте установка этих параметров производилась корректно.
Логическая ошибка, при переключениях этих опций запись настроек в куки выполнялась для их предыдущего состояния. Исправлено. Теперь настройки на сайте всегда устанавливаются в соответствии с "галками" в меню.
- исправлена ошибка с отрисовкой пустого контекстного меню аддона на всех страницах всех сайтов;
Проявлялось только в браузерах версий старше CR48, "корявка" в принципе отсутствует в более новых браузерах. Связано с некорректным определением контекста меню групп настроек (не удалялся пустой разделитель).
Исправлено. Теперь контекстное меню в любых браузерах отрисовывается корректно, группы настроек в старых браузерах отображаются только на страницах сайта YouTube.
- исправлена мелкая синтаксическая ошибка в функции добавления CSS, на работу функции не влияла;
Случайная "очепятка" в одном из параметров CSS. Потенциально могла служить причиной неправильной работы функции цветокоррекции. Исправлено.
- доработана предпроверка допустимости запуска действия из меню в текущем контексте вызова;
Изменена регулярка проверки URL ссылки или иного контекста, для которого вызывается действие из меню, на полное соответствие всем поддерживаемым маскам для сервисов YouTube. Ситуация некорректного вызова могла возникать в браузерах версий CR48+ при вызове части функций (переходов или настроек) из контекстного меню кнопки на тулбаре, если такие попытки делаются НЕ на сайте YouTube. Также такая ситуация возникает в любой версии браузера при щелчке по кнопке на тулбаре, если текущая вкладка НЕ является страницей ролика на сайте YouTube.
Кроме того, если действие не может быть выполнено в контексте вызова, теперь будет выдан соответствующий алерт об отказе (раньше невыполнимое действие просто молча игнорировалось).
- доработана функция отображение настроек кодека/фреймрейта в интерфейсе плейера (MP4/Max.FPS=30);
Теперь эти параметры отображаются и в окне/фрейме embedded-плейра (в предыдущих версиях – только в плейере на основных страницах роликов). В мобильной версии страниц этот блок не выводится, но сами настройки проверяются и отрабатываются скриптом инжектора.
Кроме того, функция отрисовки блока этих настроек теперь "дожидается" окончания загрузки ролика (теперь эта строчка может появляться не сразу) для гарантированного отображения этого текстового блока.
- изменён манифест, возвращено использование скрипта инжектора в мобильной версии YouTube;
Для скриптов инжектора добавлено разрешение запуска на домене m.youtube.com. Теперь функции отключения комментариев и/или "рекомендуемых" снова работают и в мобильной версии сайта.
Кроме того, при этом теперь и в мобильной версии сайта также работает общее сохранение, восстановление и применение любых изменяемых настроек просмотра (кодек, фреймрейт, цветокоррекция и т.д.). Эти изменения теперь работают независимо от текущего домена, настройки применимы как для основной, так и для мобильной версии YouTube.
- изменён принцип хранения* настроек на сайте – только в куки, localStorage для этого больше не используется;
Связано с проблемами ограничения браузером доступа к локальному хранилищу текущего сайта в случаях, если контент с YouTube выводится во фрейме (встроенные ролики на любых сторонних сайтах). В этих случаях попытка доступа инжектора к localStorage приводила к ошибке безопасности, после чего дальнейшая работа скрипта блокировалась.
Теперь работа с локальным хранилищем производится только на страницах основного домена (www.youtube.com), в localStorage теперь хранится только копия внешнего скрипта подключаемого загрузчика. Работа с локальным хранилищем не используется на мобильной версии сайта и при запуске в режиме embedded-плейера.
Соответственно изменён код фонового скрипта и инжектора, добавлены дополнительные проверки для обеспечения корректной работоспособности всех скриптов при различных условиях запуска.
- изменена функция скачивания и сохранения файла внешнего подключаемого скрипта загрузчика;
Упрощён код функции в инжекторе, убраны дублирующие проверки версии браузера. Теперь URL этого скрипта сохраняется в куки, функция скачивания просто берёт это значение и загружает файл. Сами условия проверки браузера и определение соответствующего URL для загрузки оставлены только в фоновом скрипте расширения.
Дополнительно добавлена проверка инжектором наличия в куках URL загрузчика. При его отсутствии будет выдан алерт о необходимости восстановления настроек, это сообщение может выдаваться только при попытке вызова загрузчика и только на основном сайте YouTube. При работе в мобильной версии или в режиме embedded-плейера это условие не проверяется и сообщение не выдаётся.
- переделано сокращённое меню страницы, удалена часть дублирующих пунктов, оставлены только нужные;
Сделано с целью того, чтобы свести к минимуму (в упрощённом меню) вероятность появления вложенного меню для отдельных элементов контекста, т.е. чтобы это меню практически всегда состояло из единственного пункта, привязанного к контексту под курсором (ссылка, фрейм, страница, видео).
Из всех пунктов сокращённого меню удалён префикс "YTE:". Также немного изменены названия этих пунктов, соответственно контексту и действиям.
- изменено меню групп настроек, часть пунктов переименована, переупорядочена и перемещена в другие группы;
Изменён порядок следования пунктов в меню "Настройки просмотра" + добавлены новые (см.ниже).
Пункт "Задать CSS цветокорректора видео" переименован в "Задать CSS цветовой коррекции" и перемещён из группы настроек интерфейса в группу настроек просмотра.
Пункт "Автоподключение панели загрузки" перемещён из группы настроек интерфейса в группу настроек просмотра.
Сделано исходя из логики применения этих опций "по месту", функционально перемещённые опции не изменились.
Для "красоты восприятия" из названий всех пунктов удалено концевое троеточие (…), присутствовало в заголовках групп настроек и в названиях части пунктов (для ссылок и т.д.).
- добавлен пункт меню для ручной перезагрузки расширения – "Перезагрузить/обновить в DevMode";
Расположен в группе "Сервисные функции". Добавлен чисто для удобства при самостоятельных доработках исходного кода. Исходя из названия, присутствует только при установке расширения в режиме разработчика, при использовании официальных авторских установочных пакетов не отображается.
- добавлена опция просмотра в "безопасном режиме" – "Безопасный режим просмотра видео";
Расположена в группе "Настройки просмотра". По умолчанию выключена. При включении задействует т.н. "детский режим" – фильтр контента, ограничивающий просмотр роликов с "чернухой и ужасами" и прочий "взрослый" контент.
При этом, если конкретный ролик заблокирован таким фильтром, на странице отображается сообщение "Видео недоступно. Чтобы посмотреть это видео, отключите безопасный режим."
Настройка сохраняется в куки и автоматически проверяется (и переустанавливается) инжектором. Если эта опция включена – её отключение средствами сайта YouTube действует только на период переходов в пределах вкладки и до её перезагрузки.
- добавлен переключатель "Показать рекомендуемые в плейере" (в группе "Настройки просмотра");
Относится только к режиму "embedded-плейера". По умолчанию выключен, при этом отображение "рекомендуемых" видео в режиме "embedded-плейера" полностью зависит от настройки "Не выводить список рекомендуемых" (будут отсутствовать, если эта настройка включена).
При включении блокирует скрытие блока "рекомендуемых" в режиме "embedded-плейера" (будут отображаться независимо от настройки "Не выводить список рекомендуемых").
Эта опция также влияет на параметры стандартных ключей в URL переходов (применяются при вызове из меню для открытия ссылок в режиме "embedded-плейера").
Настройка сохраняется в куки и автоматически проверяется инжектором. Если эта опция включена – функция очистки блока "рекомендуемых" в режиме "embedded-плейера" игнорируется.
Эта опция недоступна для изменения, если ВЫКЛючена настройка "Не выводить список рекомендуемых" (по умолчанию). В этом случае "рекомендуемые" в режиме "embedded-плейера" отображаются всегда.
- доработан функционал "кнопки" вызова загрузчика (красная полоса в верхней части плейера);
Улучшена "отзывчивость" кнопки (события mouseover/mouseout заменены на mouseenter/mouseleave). Добавлена фича отслеживания переключений текущего режима плейера (широкоэкранный или обычный) с динамическим изменением подсказки у "кнопки" о доступных действиях.
- введено ограничение на ожидание готовности главного видео на странице ролика (30 секунд).
Жёстко ограничено максимальное время ожидания загрузки видео для срабатывания автостопа и отрисовки "кнопки" вызова загрузчика. При превышении этого времени отслеживание готовности прекращается, автостопа не будет, "кнопки" загрузчика в плейере тоже не будет. Также не будет выполняться очистка комментариев и отключение блока "рекомендуемых" (если задано в настройках просмотра).
Сделано в целях снижения общей нагрузки на браузер на слабых компьютерах или при использовании слишком медленных каналов. В подавляющем большинстве случаев указанного порога достаточно для нормального запуска всех функций.
* Для лучшего понимания настоятельно рекомендуется прочитать важное примечание по настройке браузера.
Прочие изменения:
- возвращена функция принудительного перестроения меню в браузерах версий старше CR47;
Решает проблему "потери" изменённого контекстного меню (состояние "галок" настроек) в старых браузерах после выключения/включения расширения или после перезапуска браузера (присутствует, например, в браузерах CR31/36).
В браузерах версий CR47+ эта функция не требуется и не задействуется.
- переименован один из ключей localStorage с проверкой/переустановкой его значения при обновлении;
Настройка включения "расширенного" контекстного меню (по умолчанию включена, ключ в хранилище отсутствует). Если была выключена (использовалось "сокращённое" контекстное меню страницы), настройка сохраняется в новом ключе, старый ключ удаляется. Это однократное действие, выполняется только при обновлении версии расширения.
- оптимизирован код скриптов, упрощены проверки отдельных связанных условий и параметров настроек.
Упрощена функция отключения комментариев и "рекомендуемых", теперь для неё используется общая функция установки стиля, также применяемая и для цветокоррекции. Немного повышена скорость обработки страницы инжектором за счёт оптимизации кода этой функции.
Добавлен ряд проверок, ускоряющих обработку страницы инжектором, бо́льшая часть функций теперь не определяется и не выполняется, если отсутствуют соответствующие им настройки просмотра.
Исходя из логики применения и выполняемых действий перераспределены по модулям функции обработки переключений и изменений настроек, оптимизирован и унифицирован их код.
В результате в целом уменьшен общий размер как модулей фонового скрипта, так и скриптов инжектора.
Известные проблемы:
- Ошибка* перестроения меню при изменении некоторых настроек.
Связано с пропущенным определением переменной. Будет исправлено в следующей публичной версии.
Для самостоятельного решения проблемы правим файл ytemenu.js: перед строкой 2 добавляем код:
this.extDevMode = LS.extDevMode === 'true',
и перезапускаем расширение (делаем это в режиме разработчика).
- Ошибка* построения персонального списка серверов InVidious (пункт "Изменить список серверов InVidious")
Связано с пропущенным определением временной переменной. Будет исправлено в следующей публичной версии.
Для самостоятельного решения проблемы правим файл yterare.js: в строке 43 правим код:
заменяем s[8] на T.old (с учётом регистра, всего два вхождения)
и перезапускаем расширение (делаем это в режиме разработчика).
- * Обновлено: эти ошибки исправлены в версии 2022.11.17.
Скриншоты:
Блок аддона на странице управления расширениями:
Запрашиваемые разрешения:
Меню "Смотреть и скачать":
Меню "Настройки просмотра":
Меню "Настройки интерфейса":
Меню "Сервисные функции" (выделен пункт перезагрузки при установке в режиме разработчика):
Меню "Справка и поддежка" (выделен переход на страницу ченч-лога текущей установленной версии):
Сообщение о недопустимом контексте вызова (например, при щелчке по кнопке на тулбаре вне сайта YouTube):
Меню расширения в браузерах версий до CR48 (группы настроек во вложенных подменю):
История и обсуждение
Общие технические сведения
- Технологии и API:
Чистый JavaScript (ES5), API: tabs, contextMenus, browserAction, content-script
- Запрашиваемые разрешения:
Общие: [ "activeTab", "contextMenus" ], контент-скрипт: [ "*://www.youtube.com/*", "*://m.youtube.com/*" ]
Загрузка и установка
Дополнительно
|