логотип сайта MyLittleServices.ru

Кромешности

Расширения для браузеров на основе Chromium

По моему скромному мнению, все без исключения браузеры «из коробки» довольно неудобны в использовании. Типичная реакция пользователя, поставившего любой браузер «fuuuuuu; тут нифига нет нужного и есть куча ненужной фигни». Можно пойти и повеситься. Но есть и другой путь. Браузеры предоставляют возможность расширять функциональность самостоятельно. Конечно, нужно немного уметь программировать. Но потратить некоторое время на изучение JavaScript и чтение описаний различных API определенно стоит. Ни один разработчик в мире не сможет дать пользователю то, что пользователь действительно хочет. Только сам пользователь может сделать себе хорошо. Остается вопрос, какой же браузер выбрать в качестве основы. Я выбрал Vivaldi, кой сделан на Blink, как и ряд других популярных браузеров. Vivaldi и без расширений неплохо настраивается, в отличие от конкурентов. Дополнительный положительный момент: расширения формата crx универсальны, то есть будут успешно работать и в Vivaldi, и в Яндекс.Браузере, и в Opera Next, и даже в Google Chrome. Подробное руководство по установке расширений чуть ниже.


«Комешности» - это, конечно же, моя любимая игра со словами. В данном случае речь о придуманном мною слове chromesions, составленном из слов chrome extensions. Я его «перевел» на русский и получил забавное слово «комешности». :)



Вот, содержание:

Как установить расширение?

Установить расширение просто: нужно скачать, открыть страницу расширений (таковая обычно лежит по адресу вроде chrome://extensions) и перетащить туда расширение мышью. Но, как обычно, в любой ложке меда есть бочка дегтя. Простота доступна только пользователям некоторых браузеров (того же Vivaldi, например). Иные браузеры (не будем показывать пальцем) проявляют назойливую заботу о пользователе, и не позволяют добавить расширение без дополнительных плясок с тамбурином, если это расширение не опубликовано в Chrome Web Store. Вернее, добавить-то можно, но расширение будет автоматически выключаться при каждом запуске браузера. Обосновывают такое неприличное поведение браузера, конечно, заботой о безопасности, но мы то знаем...

Казалось бы, что простейший выход - добавить расширение в Chrome Web Store, но не все так однозначно. Можно попробовать поискать там, например, качалку видео с Youtube. Не нашлось? Да быть такого не может! :) Да, Google, владеющий Youtube, не любит, когда качают видео, поэтому расширения, позволяющие это сделать, из Chrome Web Store невозбранно выпиливаются. Что удаляется еще? Никто, кроме модераторов Chrome Web Store, не знает. Что касается меня, то я попробовал было добавить расширение в Chrome Web Store, но когда с меня затребовали 5 долларов непонятно за что - я решил, что, пожалуй, пока откажусь. Дело, конечно, не в огромной сумме, а в идиотичной ситуации: если хочешь предложить людям свои бесплатные расширения - за это удовольствие еще и заплатить требуется, иначе Google Chrome будет невозбранно компостировать пользователям мозги. Могут быть и более серьезные препятствия для публикации. Например, расширение может быть разработано для интранета какого-то секретного подразделения, и потому содержит информацию, не подлежащую разглашению.

    Что же делать тем, кто не желает, чтобы Google или кто-либо еще решал за него, какие расширения использовать, а какие нет? Можно выдохнуть, выход есть! И даже не один.
  1. Включать расширение вручную при каждом запуске браузера. Самый хреновый вариант.
  2. На странице расширений можно включить режим разработчика (как правило, есть такая галка вверху), после чего появится возможность поставить распакованное расширение. Распаковать расширение можно практически любым хорошим архиватором. Установка расширения в распакованном виде несколько сложнее, но есть и положительный момент: распакованные расширения могут более полноценно работать с локальными (сохраненными на жесткий диск) страницами. Выключать браузер ничего не будет, но надоедать предупреждениями при запуске продолжит. Не лучший вариант, но все же получше, чем п. 1.
  3. Поставить предварительную версию браузера (бету). В бетах по каким-то причинам анальную защиту выключают (это касается не только Google Chrome, но и иных браузеров), в связи с чем можно спокойно поставить расширение и использовать его без ограничений. Наверное, любопытных пользователей и разработчиков создателям браузеров не жаль. :) Вариант весьма неплох, но в бетах больше шансов словить баг, который в финальной версии был бы ликвидирован.
  4. Снести свой браузер, и поставить вместо него Vivaldi или иной браузер, который соблюдает субординацию, и не пристает к пользователю с непрошенной защитой.

Кстати, с некоторых пор пользователи браузера Mozilla Firefox получили возможность устанавливать расширения для хромиумов при помощи расширения Chrome Store Foxified. Оно позволяет установить расширение и со своего жесткого диска. Навязчивая защита там тоже есть, но ее можно выключить в версиях Developer Edition и Nightly. Похоже, теперь у пользователей Firefox более выигрышное положение: они могут использовать и расширения для Firefox, и расширения для хромиумов. Так как в коллекции расширений Firefox нет (кажется) цензуры, там можно найти такие расширения, которые пользователи хромиумов в Chrome Web Store не найдут (например, ту же качалку для Youtube можно найти и установить легко).


Ненавижу, когда ссылки на сайте не подчеркнуты. Аналогичное отношение у меня к ссылкам, которые не помечаются цветом после посещения. Но ненависть не заставит дизайнеров прописывать нужные стили. Данное расширение позволяет манипулировать внешним видом ссылок: сделать их подчеркнутыми, назначить свои цвета для ссылок, для посещенных ссылок, а также указать, в какой цвет будут окрашиваться ссылки при наведении на них курсора мыши. Работает почти везде. Настройки расширения позволяют выключить ненужное.

После установки расширения ссылочки будут выглядеть как-то так:

My Little Links: скриншот

Журнал версий

Версия 4.0

  • Весьма непростая фича добавлена. Расширение научилось определять тип фона (темный или светлый) под ссылкой. После аналогичным образом анализируются установленные в расширении цвета для ссылок. Если тип цвета ссылок и фона совпадает - специальная функция меняет цвет ссылки таким образом, чтобы цвет стал контрастным (для темного фона цвет осветляется и наоборот). Работает в большинстве случаев недурно. Запускается два раза - на случай, если некоторые ссылки грузятся с задержкой.
  • В селекторы стилей для установки подчеркивания и ховера добавлен ID - что усилило их вес. Теперь эти стили срабатывают практически везде, даже если верстальщик использует для оформления ссылок весомый специфичный селектор.

Версия 3.3

  • Добавлена новая настройка: выбор стиля подчеркивания. ИМХО, все стили, кроме солидной линии, выглядят ужасно в нынешних хромиумах (в Firefox лучше), но ради прикола - почему бы не включить порой подчеркивание волнистой линией? :)
  • Исправлено неудачное решение хранить каждую настройку в отдельном месте хранилища. Трудно сохранять и загружать. Переделал хранение всего в одном объекте. Спасение старых настроек сделано. Так как работает спасение лишь после запуска опций, при наличии старых настроек страница с настройками будет открыта единожды автоматически.
  • Структура настроек также поправлена - с прицелом на развитие расширения.
  • Пункты в попапе переделаны - теперь они такие же, как в прочих расширениях.
  • Появилась функция добавления стилей в атрибут style ссылок. Но, подумавши, я ее все же выключил - вреда от нее, похоже, больше, чем пользы.

Версия 3.2

  • Добавлена еще одна настройка: декодирование анкоров ссылок (без затрагивания самих ссылок). На самом деле эта настройка теоретически может поломать ссылки (лишь теоретически - за несколько недель тестирования такого не было), так что можно включать лишь в случае необходимости - например, если надо поработать с большим количеством ссылок, содержащих закодированную кириллицу.

Версия 3.1

  • Добавлен перезапуск основной функции расширения по команде из другого расширения. Для перезапуска нужно послать на ID расширения сообщение "my_little_links_start".

Версия 3.0

  • Система ликвидации двойного подчеркивания достаточно сильно изменена, в связи с чем счел возможным более радикально изменить версию расширения. Внедрен контроль: в настройках теперь можно включить борьбу с двойным подчеркиванием явным образом, причем пользователь также имеет возможность ввести конкретные хосты, на которых двойное подчеркивание требуется убирать. Если убирать нужно везде - поле для хостов можно оставить пустым. Примечание: имя хоста не включает протокол и слеш. То есть не нужно добавлять в настройки, например, http://schema.org/ - это не сработает. Корректное имя: schema.org. Вообще-то можно было бы проверять весь урл, но тогда появился бы дополнительный риск ложных срабатываний, так что остановился на поиске только в имени хоста.
  • Сам способ удаления двойного подчеркивания изменен; стал проще, надежнее, требует меньше ресурсов.
  • Логика отображения на примерах в настройках чуть изменена: теперь если отображение посещенных ссылок выключено, обе ссылки окрашиваются в цвет, выбранный для обычных ссылок (если, конечно, эта опция задействована). Ранее пример посещенной ссылки при выключении соответствующей опции отображался простым черным цветом.
  • Тексты в настройках я сделал чуть мельче - чтобы уместить новые элементы. Кажется, менее удобно не стало.

Версия 2.5

  • В выпадашку добавлена кнопка, открывающая страницу настроек.
  • Появилась проверка наличия внутри ссылки картинки для отмены подчеркивания. Если ссылка является картинкой, то подчеркивание там все равно особо не видно, а попадающиеся иногда небольшие кусочки пустоты с подчеркиванием лишь портят вид.
  • Также найдены несколько остроумных (наверное) примеров верстки (подчеркивание ссылки при помощи box-shadow, помещение внутрь ссылки нескольких элементов с подчеркиванием через border-bottom), которые проявляли себя двойным подчеркиванием ссылок. Я написал функцию, предотвращающую двойное подчеркивание. Теперь шансы нарваться на таковое уменьшены (хотя, думаю, не до нуля), но на некоторых немногочисленных сайтах ссылки могут выглядеть немного необычно - так как дизайнеры не ожидали, что часть оформления будет убрана.

Версия 2.4

  • Добавлена проверка наличия элемента head перед добавлением в него стилей. Как выяснилось, в некоторых документах он отсутствует, что вызывало ошибку в консоли (впрочем, ничего не ломавшую).
  • Чуть изменена логика добавления элемента style: собственно добавление вынесено в отдельную функцию, что позволило не только сократить код, но и не добавлять элемент style, если никаких стилей применять не нужно (ранее элемент style создавался и добавлялся в самом начале, и к нему уже лепились нужные стили).
  • Устранен бажок с отображением на примере в настройках стиля ссылки по наведению.
  • Подтверждение удаления всех настроек теперь ожидается 6 секунд, после чего отменяется, и процедуру удаления нужно начинать заново. Вряд ли кто-то, кому действительно надо удалить настройки, будет так долго думать. Вероятность же случайного удаления снижается.
  • Стили страницы с настройками улучшены.

Версия 2.3

  • Появилась кнопочка расширения справа от адресной строки браузера. При нажатии появляется выпадашка, которая позволяет быстро сделать три вещи: однократно выключить расширение в активной вкладке, проставить в настройках галочки (чекбоксы) по умолчанию (то есть будет включено только подчеркивание и окрашивание посещенного), либо снять в настройках все галочки вовсе. Важный нюанс: манипуляции производятся только с чекбоксами, включающими определенную опцию. Выбранные ранее цвета сохраняются.
  • Чуть подправлена верстка настроек. Довольно странно, но с очередным обновлением Chromium элементы в настройках немного съехали. Теперь есть некоторый запас места, больше такого быть не должно.

Версия 2.2

  • Появилась возможность определить цвет для фона под ссылками.
  • Также теперь можно к каждой ссылке добавить богомерзкий, но все еще довольно часто используемый в сети атрибут target со значением _blank. Это заставит все ссылки открываться в новой вкладке.

Версия 2.1

  • Добавлена возможность назначить цвет для ссылок вообще (a:link), а не только для посещенных.
  • Появилась возможность определить цвет ссылок при наведении на них курсора (a:hover).

Версия 2.0

  • Версия так сильно изменилась в связи с добавлением офигенной опции: в настройках теперь можно выбирать совершенно любой цвет для посещенных ссылок. :з
  • В настройках появились кнопки сохранения, восстановления, и полной очистки настроек.
  • На некоторых сайтах вместо стандартного подчеркивания используется нижняя граница (border-bottom), в связи с чем на таких сайтах появлялось двойное подчеркивание. Два, конечно, лучше, чем ничего, но теперь расширение обнуляет нижнюю границу для ссылок. Стало чуть чище.

Версия 1.2

  • Все ссылки (a:link) по умолчанию подчеркиваются. Все посещенные (a:visited) ссылки помечаются стандартным пурпурным цветом.
  • Имеется страница настроек, которая позволяет отключить подчеркивание и/или окрашивание цветом.

My Little Clipboard

Ненавижу, когда текст копируется с форматированием. Дурацкие шрифты, отступы, цвета. Почему в браузерах нет возможности выключить это безобразие и получать просто текст без фигни - не знаю. Расширение позволяет страдающему пользователю скопировать текст без фигни. Чистит текст как при копировании при помощи контекстного меню, так и при копировании посредством клавиш Ctrl и С. В дополнение к чистке от форматирования расширение ликвидирует некоторые методы добавления к выделенному тексту мусора вроде обратной ссылки на источник.

Журнал версий

Версия 2.5

  • Добавлен запуск сего расширения из другого расширения командой "my_little_clipboard_start".

Версия 2.4

  • Возвращена возможность копировать текст без форматирования костылем, а не штатным методом (метод очищения выбирается в настройках). На самом деле это вряд ли может понадобиться, но решил все же вернуть выбор - мало ли, вдруг какие-то тексты так копируются лучше. Собственно, основная боль при удалении форматирования - исчезновение переносов / пробелов при определенной верстке. Но, кажется, и костыль тут не очень помогает. :(

Версия 2.3

  • Радиокнопки заменены на флажки. В связи с чем теперь обе опции (ликвидацию форматирования и блокировку добавления к копируемому тексту мусора) можно выключить. По умолчанию они обе включены.
  • Код, вычищающий добавляемый в буфер обмена мусор, теперь обернут в функцию, и запускается несколько раз, что увеличивает вероятность успеха.
  • Добавлена проверка наличия элемента head перед добавлением в него скрипта.
  • Появилась возможность удалять настройки.
  • Стили страницы опций улучшены.

Версия 2.2

  • Добавлена страница настроек, на которой можно выключить или включить обратно чистку буфера обмена от мусора.

Версия 2.1

  • Кажется, я нашел довольно универсальный способ вычищать мусор из буфера обмена. Не уверен, что сработает в 100% случаев, но пока проблемы не всплывали.

Версия 2.0

  • Как выяснилось, зря я использовал костыльный метод копирования без форматирования. Уже есть вполне удобный штатный способ оторвать форматирование. Его я и задействовал. Код сократился радикально. Логика использования расширения тоже поменялась: теперь нет отдельного пункта меню, расширение просто реагирует на любое копирование любым способом.
  • Некоторые сайты любят при копировании подсовывать в буфер обмена помимо выделенного текста также ссылку на себя, рассчитывая, видимо, что текст копирует слепой и умственно отсталый человек, который не идентифицирует этот мусор. Так как расширение предназначено для копирования без фигни, я решил добавить чистку копируемого от подобного мусора. Пока наткнулся на два метода замусоривания буфера обмена, их и ликвидировал. По мере обнаружения иных методов постараюсь убивать и их.

Версия 1.1

  • Копирование выделенного текста осуществляется по возможности с переносами строк. Сначала расширение пробует забрать выделенный текст из активной вкладки при помощи чистого JavaScript. Ежели это не получается, то текст для копирования берется из свойства selectionText объекта info, что входит в chrome.contextMenus API (там, увы, переносы не прописываются, но это лучше, чем ничего).
  • Копирование ссылок тоже имеется. Пока - просто для логичности и как задел на будущее, ничего отличного от стандартного копирования ссылок в этой функции нет.

My Little Right

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

Журнал версий

Версия 1.6

  • Небольшая коррекция чистки урлов для выключения расширения: теперь удаляются все пробелы.

Версия 1.5

  • В расширении появились настройки. Строго говоря, настройка пока одна: выключение для некоторых сайтов. В подавляющем большинстве случаев расширение ничего не ломает, но бывают полезные сайты, которые заменяют стандартное контекстное меню браузера каким-либо своим особенным. Например, почта Яндекса. Теперь домены, на которых не нужно запускаться, можно добавить в настройки через запятую. Вводить нужно без фигни вроде протокола, просто имя сайта. Кстати, по части имени расширение тоже найдет нужный сайт.

Версия 1.4.1

  • Минорное обновление: устранен баг при запуске расширения по команде из стороннего расширения.

Версия 1.4

  • Обнаружился сайт, который выдает при правом клике модельное окно с гениальным сообщением о том, что копировать запрещено. Выяснилось, что привязано оно к сравнительно редко используемому событию mouseup, которое теперь также обнуляется.
  • В CSS есть свойство user-select для запрещения выделения текста. Пока я его почти не вижу на сайтах, решил упредить. Теперь расширение устанавливает приоритетное значение text для данного свойства во всех элементах документа.
  • Добавлен запуск расширения по команде из другого расширения. Это может быть весьма полезно при асинхронной загрузке результатов, о которой расширение не подозревает. Теперь разработчик стороннего расширения (например, я) может дать команду перезапуститься, послав на ID этого расширения строку "my_little_right_start".

Версия 1.3

  • Поискал и, кажется, нашел самый лучший метод поделить на ноль все издевательства над стандартным поведением при использовании правой кнопки мыши. Правда, он весьма жесткий, в связи с чем вероятно исчезновение некоторой функциональности на сайтах, где правый клик как-то обрабатывается.
  • Добавлена проверка наличия элемента head перед добавлением в него скрипта.
  • Код, добавляемый в документ, теперь обернут в функцию. Появилось чуть больше контроля за запуском и выполнением.
  • Основная функция, ликвидирующая блокировки, запускается теперь дважды: сразу после построения DOM-дерева (в большинстве случаев должно хватать), и после наступления события window.onload (на всякий случай). Ранее была привязка только к window.onload, но это событие, как показывает практика, довольно ненадежное, иногда происходит с большой задержкой или не случается вовсе.

Версия 1.2

  • Изменение одно: теперь инъекция происходит в голову, а не тело. Не критично, просто код не вылезает при работе с XML, например.

Версия 1.1

  • Посещение по долгу службы одного страшного сайта, владелец коего настолько упрлс, что заблокировал даже использование кнопки Ctrl, вынудило меня обновить расширение. Теперь извращения с кнопкой Ctrl выпиливаются.

Версия 1.0

  • Обнуляется нестандартное поведение при событиях oncontextmenu, onmousedown, onselectstart, oncopy. Чаще всего защита от копирования подразумевает блокировку вызова контекстного меню, нажатия правой кнопки мыши, выделения текста и копирования.
  • Восстановление поведения по умолчанию делается дважды: на уровне документа, и на уровне каждого из элементов документа.

My Little Href

Обычно разработчики сайтов стараются делать ссылки дружелюбными, поэтому пишут в анкоры какой-то человеческий текст, поясняющий последствия клика по ссылке. Это, конечно, правильно, но не очень удобно в том случае, если нужно посмотреть на собственно целевые адреса (href) ссылок. Данное расширение принудительно пишет в анкоры целевые URL. Такой вандализм ломает дизайн, поэтому расширение нужно держать выключенным, и включать только в случае необходимости.

Журнал версий

Версия 1.0

  • Расширение забирает содержимое атрибута href у всех элементов a, заменяет им анкор. Все.

My Little Diversion

Расширение позволяет блокировать перенаправления. Не все, конечно, а лишь честные 3xx редиректы. При обнаружении редиректа расширение спрашивает, что с ним делать. Сеть наполнена редиректами; практически на любом сайте они есть, а некоторые сайты без перенаправлений и вовсе не могут работать. В связи с этим расширение стоит включать только в случае надобности. Например, если нужно зайти в подозрительную сетевую клоаку, откуда могут без спросу перенаправить на какой-нибудь помоечный завирусованный рекламный сайт. В том случае, если идти по редиректу не хочется, а ссылочку заполучить нужно - можно включить в настройках функцию копирования целевой ссылки при заблокированном перенаправлении.

Журнал версий

Версия 1.3

  • Изменение с одной стороны небольшое, с другой - довольно важное: мною ликвидирован глупый баг: я забыл прописать в манифесте ссылку на XML с информацией об обновлениях, из-за чего расширение не могло обновляться автоматически.

Версия 1.2

  • Настройки теперь хранятся в chrome.storage, а не в обычном локальном хранилище браузера. Кажется, что так надежней.
  • Так как удалить настройки теперь простой чисткой файлов cookie в браузере не получится, добавлена кнопка для удаления настроек.

Версия 1.1

  • Появилась страница настроек. Исключительно с одной целью: дать возможность включить автоматическое копирование заблокированной ссылки в буфер обмена. По умолчанию выключено.

Версия 1.0

  • Расширение отслеживает серверные редиректы. При обнаружении таковых запрашивает подтверждение перенаправления у пользователя.

My Little AntiHypertension

Расширение убирает наиболее раздражающую часть навязчивого сервиса Яндекса, ЖЖ и MetroLyrics. Постоянно вылезающие блоки с предложением что-либо скачать или прочесть - это сущий ужас. Также расширение может удалять со страниц изображения в формате GIF (нет ничего противнее, чем страница, забитая анимированными бегемотоподобными гифами) и восстанавливать стандартный вид полос прокрутки. Если раздражают некоторые пользователи в ЖЖ - их комменты расширение поможет убрать.

Писалось под свои нужды, но, возможно, кому-то еще пригодится.

Название расширения столь гениально, что стоит отдельно пояснить. Слово «hype» в переводе с английского означает «навязчивая реклама». Конечно же, когда человеку постоянно пытаются подсунуть то, что ему не нужно, он начинает волноваться, злиться и т. д., в связи с чем повышается кровяное давление (слово «hypertension» переводится как «гипертония»). Таким образом, приставка «anti» в названии имеет двойной смысл: во-первых, расширение убирает навязчивую рекламу и прочий раздражающий контент; во-вторых, убирая ненужное, расширение способствует успокоению и снижению артериального давления.

Журнал версий

Версия 2.3

  • Добавлено скрытие комментов анонимов в ЖЖ. По желанию пользователя, конечно.
  • Переделан поиск промо - кажется, ликвидация стала надежнее.
  • Появилось слежение за прошедшими уже обработками постов и комментов в ЖЖ - теперь один и тот же блок два раза не проверяется. Экономия ресурсов, хоть и малозаметная.
  • Расширение начало перезапускать функции чистки в ЖЖ не только в блоке комментариев (там это делалось изначально - для работы с открывающимися тредами и другими страницами комментариев), но и в ленте постов, что, видимо, поможет тем, кто любит «бесконечную» ленту без разделения на страницы. Хотя, на мой вкус это - неудобная лента, сильно нагружающая браузер лишними данными.

Версия 2.2

  • В связи с затрудненным доступом к настройкам со страницы расширений добавил попап в кнопку расширения на панели расширений. Можно открыть настройки, открыть этот сайт, выключить расширение.
  • В ЖЖ появилась возможность привязать блог к домену, так что запуск лишь в домене LiveJournal уже не вполне актуален. Написано новое определение условий для запуска, что позволяет скриптам срабатывать в нужные моменты - даже если в урле ничего на ЖЖ не намекает.
  • В ЖЖ появился новый вид чего-то вроде Промо - добавлено и его удаление тоже.
  • Чуть подправлена чистка Яндекс.Переводчика.

Версия 2.1

  • Долгожданная (о себе говорю) фича: вычищение комментариев неугодных пользователей LiveJournal. Логины или имена (не)нужных пользователей можно ввести в настройках, разделяя их запятыми. Пробелы между словами использовать можно, так что скрывать комментарии тех, кто авторизуется через сторонние сервисы, также получится. Собственно, комментарии можно было просто скрыть с информированием, либо вырезать бесследно. Я реализовал оба варианта. Выбрать способ ликвидации можно в настройках. Кажется, наиболее предпочтителен первый вариант: аккуратное скрытие с сообщением - мол, скрыт комментарий такого-то пользователя. И все же нужно иметь в виду, что самый надежный способ убрать неугодное - полное удаление. Тем более, что скрытие, похоже, вызывает ошибки системы раскрытия тредов в LiveJournal (вроде бы, это не критично, но все же). Вполне очевидно, что комменты в свернутых тредах расширение не увидит и не удалит (если надо). Так как разворачиваются треды без перезагрузки страницы, я встроил регулярный перезапуск чистилки комментов: это позволит довольно быстро чистить вновь появившиеся комменты, и, похоже, не сильно нагружает браузер. И еще небольшое уточнение по поводу того, как работает поиск имен. Я задействовал регулярные выражения - чтобы искать в любом регистре. Побочные эффекты таковы: ищется не слово целиком, а любое вхождение (не думаю, что это большая проблема), также можно вместо простых имен пользователей прописывать регулярные выражения со всеми плюшками (например, \d уберет комментарии всех пользователей с цифрами в логине). Можно было бы соорудить поиск только полных совпадений и экранировать спецсимволы регулярок, но получившаяся фича довольно прикольная, пока решил оставить так.
  • GIFы отныне вырываются путем удаления всего элемента, а не чистки пути к картинке. Кажется, так надежнее.
  • Буквально перед релизом верстка в ЖЖ сменилась, в связи с чем старая функция удаления Промо сломалась. Починил.

Версия 1.7

  • Как выяснилось, в движок хромиумов встроена возможность контролировать анимацию гифов. Сейчас там значится «Important: This API works only on Chrome OS» что не есть правда: вполне себе работает везде. Раз уж есть встроенная опция - добавил ее в расширение. Теперь обуздать гифы можно двумя способами: вырвать с корнем, либо попробовать остановить (можно выбрать в настройках). Контроль анимации, хоть и встроенный, далек от идеала: почти всегда хотя бы часть анимации успевает воспроизвестись, прежде чем браузер поймет, что в картинке есть анимация. Посему самым действенным способом избежать анимации остается полное удаление всех картинок формата GIF.

Версия 1.6

  • Добавлена новая опция, охлаждающая пылающий анус: расширение теперь может восстанавливать исходный вид скроллбаров (полос прокрутки). В подавляющем большинстве случаев дизайнерские извращения над полосами прокрутки ужасны. Не уверен, что мне удалось воссоздать нормальный их вид на 100%, но в целом воссозданное выглядит очень похоже. В процессе тестирования выяснилось, что на страницах Chrome Web Store расширения не запускаются, так что там, увы, скроллбары остаются дурацкими.
  • Небольшие правки вида страницы опций.

Версия 1.5

  • Добавлено выпиливание нескольких кошмарных рекламных баннеров в LiveJournal.
  • Порой навязчивая дистрибуция в MetroLyrics вылезает сильно позже первичного открытия сайта. Регулярные перезапуски расширения - вариант не самый практичный, посему добавлена новая функция скрытия через CSS (используется сразу несколько свойств для гарантированного результата).
  • Логика работы кнопки удаления настроек чуть изменена: теперь ожидание подтверждения длится 6 секунд, после чего кнопка возвращается в исходное состояние.
  • Небольшие правки в CSS страницы опций.

Версия 1.4

  • MetroLyrics - сайт полезный, но блоки со связанным контентом, да еще разрывающие тексты песен - это какой-то кошмар. В данной версии расширения добавлена работа с MetroLyrics, теперь сайтом можно пользоваться с меньшим раздражением.
  • Добавлены перезапуски, так как часть контента, подлежащего вырезанию, грузится чуть позже основного контента страницы. Удаление ненужного запускается теперь таким образом: сначала после построения DOM, потом еще раз через полторы секунды после первого запуска; также перезапуск случается при изменении хеша или иной части урла открытого документа.

Версия 1.3.1

  • Маленькое обновление: просто добавил еще пару классов для выпиливания дистрибуции Яндекса.

Версия 1.3

  • Появилась возможность выпиливать GIFы (по умолчанию расширение их не трогает). Увы, не в 100% случаев: способ поиска GIF на странице довольно дуболомный. Но в подавляющем большинстве случаев работает.

Версия 1.2

  • Появились настройки, сохраняющиеся автоматически при изменении. По умолчанию включены обе имеющиеся сейчас опции. Также на всякий случай сделана кнопка, при помощи которой можно удалить настройки из хранилища.

Версия 1.1

  • Промо из ленты друзей и из постов в LiveJournal теперь вырезается.
  • Также в LiveJournal ликвидируется нечто, называемое LJTimes.

Версия 1.0

  • Удаляется верхняя дистрибуционная полоса в результатах обычного поиска Яндекса.
  • Простая дистрибуция (всплывающий блок с предложением скачать браузер, ссылки в подвале) удаляется почти из всех сервисов Яндекса.
  • Промо из Яндекс.Переводчика также выпиливается; для ликвидации появляющегося пустого пространства есть костыль.
  • Дистрибуция в Яндекс.Картинках не трогается, ибо ломает подгрузку результатов.
  • За адресной строкой расширение следит, поэтому при асинхронной работе дистрибуция если и вылезет, то на секунду, не более.

My Little Title

Идея невозбранно взята у Лебедева. Расширение позволяет добавить гениальный текст перед любым элементом страницы, а также после такового. Конечно, можно ограничиться добавлением текста только перед элементом, или только после - для этого в соответствующем поле настроек нужно оставить пустоту. Чтобы добавляемое не сливалось с оригинальным контентом, не стоит забывать о пробелах.

Журнал версий

Версия 2.0

  • Появилась возможность добавлять текст не только к элементу title, но и вообще к любому элементу на странице. Для этого нужно лишь прописать в настройках нужный селектор CSS. Селекторов можно задействовать больше одного, для этого нужно указать их через запятую - в общем, совершенно так же, как в CSS.

Версия 1.0

  • Расширение героически добавляет прикольный текст до и после элемента title.
  • Имеются настройки, где, собственно, прикольный текст и можно прописать.

My Little Memory

Кто забывает? Все забывают. Без напоминалки в современном мире, в коем нужно держать в голове тонны данных, жить невозможно. Лично для меня самая большая проблема - относительно редкие, но регулярные события (выходной в какой-либо праздничный день, чей-либо день рождения и т. п.). Реализация напоминаний через расширение в браузере может показаться странной затеей. В моем случае браузер - это, пожалуй, единственная программа, которая хотя бы раз в сутки будет запущена с вероятностью, близкой к 100%, поэтому мне кажется, что решение нормальное.

Журнал версий

Версия 2.0

  • Создана система сохранения настроек в файл формата JSON. Можно сделать экспорт. Если браузер не хочет сохранять файлик автоматически - будет открыта страница с текстом, можно скопировать и сохранить руками.
  • Конечно же, сделана и возможность загрузить настройки из файла. Сохранение их происходит только после нажатия на соответствующую кнопку, так что, если настройки загрузились криво, или пользователь передумал их сохранять - можно просто ничего не делать, и тогда в памяти останутся старые настройки. При загрузке файла с настройками обнаружился микроскопический бажок: отслеживаются изменения инпута, и если один и тот же файл с настройками попробовать загрузить два раза подряд (мало ли зачем) - событие не выстрелит второй раз, ведь имя у файла то же, и изменения формально нет. Решил принудительным обнулением значения у элемента для загрузки файла.

Версия 1.4

  • Давно надо было сделать возможность устанавливать не только дату события, но и время показа сообщения. Совам вроде меня не очень логично показывать напоминание в полночь по UTC (в Москве это 3 часа ночи - но от этого не легче): формально, конечно, в полночь наступает завтра, но фактически завтра наступает лишь после засыпания и пробуждения человека. Вот, теперь пользователь может указать час показа напоминания. По умолчанию сделал 12. Учет времени потребовал переписать скрипты изрядно, зато код стал чуть логичнее.
  • Сделал в настройках генерацию элементов напоминаний скриптом. Для конечного пользователя ничего не поменялось, но зато теперь можно легко увеличить количество напоминалок, поправив лишь одну переменную.
  • На страницу настроек добавлено короткое описание работы расширения, подправлен вид других элементов.
  • В текущей версии хромиумов работа с расширениями организована неудобно, добираться до настроек стало сложно. Штош, сделал попап с вызовом настроек, туда же добавил кнопку открытия сайта и выключения расширения (ну, мало ли, вдруг понадобится).

Версия 1.3

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

Версия 1.2

  • Добавлена фиксация показа сообщения в течение дня. Отныне главная функция запускается только если показов за час еще не было, что должно несколько уменьшить бесполезную трату ресурсов. Сделал было проверку раз в сутки, но, похоже, для полуночников вроде меня, которые переход одних суток в другие застают постоянно и, по сути, еще считают начало следующих суток предыдущим днем, такой подход не совсем корректен.
  • В настройках стала отображаться информация о количестве уже показанных и запланированных сообщений о событиях. Больше контроля.
  • Ранее при сохранении настроек для всех событий устанавливалось дефолтное количество сообщений (два) - даже если показы уже были. Не вполне правильное поведение. Теперь расширение сохраняет данные о показах. Впрочем, иногда бывает нужно все показы сбросить, для чего сделана специальная кнопка. Сохранение сброса, конечно же, происходит только после нажатия на кнопку сохранения настроек.

Версия 1.1

  • Проблема фиксации показов нескольких сообщений подряд, похоже, решена. Теперь любое количество показов подряд сохраняется нормально.
  • При отображении модального окна стал также учитываться случай, когда сообщение отсутствует по каким-то причинам. Несколько странно так делать, но теоретически возможно. Отныне в том случае, если сообщение для отображения не найдено, выводится стандартное известие о каком-то неведомом важном событии.
  • Обновлена функция удаления настроек. Я сделал двойное подтверждение, ибо потерять можно целых 12 событий (максимум).
  • Улучшены стили страницы настроек.

Версия 1.0

  • Расширение позволяет составить список из 12 событий (дата + сообщение). Безлимит тут показался излишним.
  • В настройках можно увидеть количество оставшихся до события дней.
  • При наступлении нужной даты расширение выведет модальное окно с соответствующим пользовательским сообщением внутри первой же открытой вкладки. Грубо, зато точно не пропустишь.
  • Указанная дата наступает в полночь, но по UTC, так что нужно делать поправку на местную часовую зону (в Москве сообщение выстрелит в 3 часа или позже).
  • Напоминание случается два раза: за день до события, и в день события. Если за день до события браузер не был запущен - будет одно напоминание. Если ни за день до, ни в день события браузер не был запущен, напоминания не будет вовсе. Маленький технический нюанс: фиксация показа случается только после закрытия модального окна, поэтому если открыть несколько страниц в момент, когда нужно выводить напоминание - оно будет выведено в каждой вкладке браузера.
  • Известный недостаток: дата проверяется при каждом открытии любой страницы в браузере, что не вполне практично. Возможно, в будущем мне придет в голову решение, при коем дата будет проверяться раз в сутки.
  • Известный баг: если напоминаний должно быть несколько одновременно, то фиксируется показ только первого (это связано с асинхронной сущностью хранилища данных) и, соответственно, для второго и последующих событий сообщение будет показано снова, пока не остается таки одно. Вероятно, в будущем я смогу придумать, как ликвидировать эту проблему.

My Little Getter

Захотелось написать качалку. Кто ж мне запретит? Картинки, например, приходится сохранять довольно часто. Вот, качалка файлов. Можно качать картинки (содержимое атрибута src элементов img), либо приказать расширению прокачать ссылки, имеющиеся на текущей странице (содержимое атрибута href элементов a). В настройках устанавливается минимальная ширина и высота скачиваемых картинок; также можно прописать расширения файлов для скачивания по ссылкам. Возможность перед скачиванием отфильтровать ненужное - есть. По умолчанию файлы сохраняются в тот каталог, который пользователь указал для скачиваемого в настройках браузера. Я сделал возможность задать подпапку для скачиваемых файлов, но эта опция может не работать в некоторых браузерах из-за старого бага в Chromium.

Журнал версий

Версия 3.2

  • Добавлена кнопка, отмечающая галками ссылки, найденные по тексту в блоке фильтрации. Сама функция поиска текста немного переделана.
  • Также появилась возможность поставить галки у части ссылок, и качать документы пачками - можно либо пометить простое количество, либо процент ссылок от начала списка. Округление процента - до ближайшего целого.
  • Положение галки, отмечающей галками все ссылки, теперь сохраняется. Если галка сия стоит, то при загрузке страницы со ссылками галки ставятся везде. В противном случае галки ставятся для части ссылок, в соответствии с настройками из предыдущего пункта. Тут может быть небольшое неудобство: если стоит галка, ставящая галки везде, то после пометить галками часть ссылок просто так не получится, нужно будет хоть что-то в фильтрах поменять (они применяются автоматически, но лишь при изменениях). Выйти из положения можно, навсегда сняв галку, отмечающую все ссылки, и установив выделение 100% ссылок от начала - фактически, эти опции делают одно и то же.
  • Добавлено подтверждение при скачивании слишком большого количества (более 50) и на страницу с выбором. Ранее таковое было лишь при скачивании всего подряд топорным образом.

Версия 3.1

  • Добавлена секция с фильтрацией найденных ссылок. Можно находить в ссылках или анкорах определенный текст (есть также флажок, включающий регулярные выражения), по которому ссылки можно удалить. После ввода текста для поиска он автоматически применяется, и найденное подсвечивается. Сделал и кнопку удаления ссылок, отмеченных чекбоксом. Переживать по поводу случайно удаленного не стоит: имеется кнопка восстановления всех напарсенных изначально ссылок.
  • Добавлена кнопка копирования в буфер только отмеченных ссылок.
  • При скачивании добавлена обработка случая, когда имя файла оказывается пустым.
  • Сделаны некоторые улучшения в таблицах стилей.

Версия 3.0

  • Весьма существенное добавление получило расширение. Если ранее качалка просто скачивала все, что удовлетворяло условиям из настроек, то отныне можно сделать выбор на отдельной странице. В таблице с найденными ссылками можно обнаружить собственно ссылки, анкоры (иногда ссылки выглядят просто кошмарно, и что-либо понять можно только по анкорам), а также флажки, коими как раз скачивание и управляется. В самом низу таблицы небольшая статистика и чекбокс, которым можно быстро поставить / снять все флажки.
  • Помимо скачивания выбранного, можно также просто скопировать ссылки (все) в буфер обмена.
  • Простое топорное скачивание я оставил (можно включить в настройках) - порой на странице 1-2 файла для скачивания, и однократное нажатие на кнопку для начала скачивания значительно удобнее постоянного открытия страницы выбора.
  • В связи с добавлением выбора функция сбора ссылок переработана - теперь она собирает в массив не просто ссылки, а объект со ссылкой и анкором. Извлечение анкоров постарался сделать более-менее умным. По крайней мере, пустые анкоры и анкоры-картинки функция находит, и сохраняет соответствующую информацию (в таблице атипичные анкоры выделены желтеньким). Ежели кроме картинки в анкоре есть атрибуты alt или title - они сохраняются для отображения, ибо полезны быть могут по сравнению со скудной информацией о пустом текстовом анкоре.
  • Расширение теперь отфильтровывает ссылки на почту.

Версия 2.0

  • Добавлена возможность скачивать не только лишь все картинки, но и вообще любые файлы по ссылкам (содержимое атрибута href элементов a). Конечно же, все подряд качать обычно смысла нет, поэтому в настройках можно указать расширения файлов для скачивания через запятую (если там будет пусто - будет качаться все). При наличии большого количества файлов для скачивания (более 50) расширение спросит, действительно ли нужно все это качать. :)
  • Расширение теперь следит за именами папки для скачивания и скачиваемых файлов, ликвидируя все недопустимые в Windows символы автоматически.
  • Чтобы уместить большее количество настроек страница с таковыми переделана, элементы теперь расположены более компактно. Всплывающие подсказки добавлены.

Версия 1.0

  • Расширение собирает ссылки на картинки из атрибута src всех элементов img, затем сохраняет их в папку для загрузки (прописывается в настройках браузера). Запуск осуществляется кнопкой на панели расширений (она справа от адресной строки).
  • В настройках можно указать минимальную ширину и минимальную высоту для скачиваемых картинок. Нужно иметь в виду, что эти данные расширение сможет получить только после отображения картинок на странице, так что нужно подождать, пока все они будут видны, и только потом нажимать на кнопку.
  • Расширение умеет сохранять файлы в подпапку внутри папки для загрузки, но в связи с багом (при наличии другого расширения, также чего-то качающего, задаваемое активным расширением имя файла и путь сохранения игнорируются) эта настройка, увы, может и не сработать.

My Little Outline

Специфическое расширение - из тех, которые нужно включать только в случае большой :) нужды. Добавляет границы элементам HTML при помощи свойства outline (то есть без изменения размеров). Получается некий отладчик, кой может весьма помочь при верстке страниц.

Журнал версий

Версия 1.1

  • Появилась возможность включить (вернее, выключить) добавление границ для любого типа элементов. По умолчанию включено все.
  • В настройках добавить пример пользовательского селектора в соответствующее поле теперь можно в один клик (по примеру). То же касается значения outline для пользовательского селектора.
  • Обнаружил, что незаслуженно проигнорировал табличные теги (thead, tbody, tfoot, tr, th, td). Они не очень-то похожи на блочные или строчные, поэтому добавил их в массив универсальных элементов.

Версия 1.0

  • Строчные, блочные, универсальные и псевдоэлементы получают границы разных цветов.
  • Цвета границ для разных типов элементов можно выбрать в настройках.
  • Также в настройках есть возможность указать произвольный селектор и значение свойства outline для него

My Little Up

Очень простое, но порой весьма полезное расширение, суть коего - дать пользователю возможность на любой странице в один клик переместиться вверх. К сожалению, не всегда на сайтах есть такой полезный элемент, как кнопка возврата к началу страницы (да, многие юзают для перемещения вверх кнопку Home, и это чертовски верно, но я все же считаю, что фанатам мыши тоже должно быть удобно). С данным расширением о проблемах возврата можно забыть. Пользователь может выбрать из двух вариантов: либо возвращаться к началу по клику на иконке расширения в панели расширений в браузере, либо внедрять на страницу кнопочку.

Журнал версий

Версия 2.0

  • Схема работы с настройками переделана: все же через объект куда удобнее. Пришлось переписать большую часть расширения. В связи с этим старые настройки будут, увы, утеряны.
  • Добавлена опция, позволяющая выключить добавление кнопки на некоторых сайтах. Есть же сайты с кнопкой, там дублировать функциональность смысла нет. Протокол не нужен, ожидается лишь доменное имя (если речь про локальную страницу - можно ввести любую часть урла). По части имени также урл найдется. Регистр не имеет значения.

Версия 1.0

  • Можно перемешаться вверх кликом по иконке в панели расширений.
  • Можно добавлять в документы кнопку возврата (она видна лишь тогда, когда в этом есть смысл, то бишь нужно переместиться вниз хотя бы на один экран). Добавление кнопки в страницы по умолчанию включено, выключить можно в настройках.
  • В настройках можно выбрать цвета кнопки (в обычном положении и при наведении курсора), и уровень прозрачности фона кнопки.