Вы можете прочитать больше об этом здесь.
Swift Selection Search (SSS)-это дополнение Firefox для быстрого поиска текста на странице с использованием ваших любимых поисковых систем.
Выберите текст на странице, и над вашим курсором появится небольшое всплывающее окно с поисковыми системами. Нажмите один, и вы автоматически найдете выбранный текст, используя этот двигатель!
SSS настраивается. Вы можете определить, какие поисковые системы появляются во всплывающем окне, появление значков, что происходит, когда вы нажимаете на них, где появляется всплывающее окно, независимо от того, следует ли скрывать его, когда прокручивает страницу, если вы хотите автоматически копировать текст на выборе и многие другие параметры.
Вы также получаете дополнительное контекстное меню для поиска с любым из ваших двигателей. Вы можете отключить это дополнительное меню в вариантах, если хотите. У вас также есть возможность отключить само всплывающее окно и оставить только это контекстное меню. Ваш выбор. :)
SSS доступен на веб-сайте Mozilla Addons, здесь:
https://addons.mozilla.org/firefox/addon/wift-selection-search
Во -первых, поскольку в JavaScript производятся webextensions, мы должны иметь возможность конвертировать TypeScript в JavaScript, предпочтительно так же автоматически.
Установите NPM . Загрузите node.js с https://nodejs.org, и вы получите NPM вместе с ним.
В папке проекта запустите это в командной строке:
NPM Установка
Это установит зависимости проекта от проекта локально в папке node_modules .
Чтобы перенести все сценарии.
"node_modules/.bin/tsc.cmd" -wwatch -p tsconfig.json
Команда останется в живых и автоматически повторно переводится код после любых изменений в файлах .ts, что полезно при разработке.
Теперь у вас есть файлы .js, так что вы можете использовать SSS в качестве webextension. Ура!
Для короткой разработки или просто любопытства, более простой способ попробовать SSS - это страница отладки#addons в Firefox. Нажмите кнопку «Загрузить временное дополнение», выберите файл в каталоге Shift Seection Search «SRC» (например, Manifest.json ), и он загрузит дополнение, пока браузер не будет закрыт. Изменения в большинстве кодов требуют снова перезагрузки надстройки.
Для более длительной разработки и/или упаковки, таких как автоматическая перезагрузка после каждого изменения, пожалуйста, следуйте инструкциям Mozilla здесь, чтобы установить и использовать инструмент Web-Ext .
Разбейте репозиторий на GitHub и клонируйте его на свой компьютер.
Следуйте инструкциям выше для того, чтобы построить .
В конце концов, у вас должен быть сценарий, который автоматически транспилирует код из TypeScript в JavaScript, и должен знать, как запустить вашу версию SSS на Firefox.
Узнайте, что SSS имеет 3 основных ветви:
Прочитайте руководящие принципы кода ниже.
Найдите проблему, которую вы хотели бы решить в списке проблем.
Спросите, работает ли кто -нибудь над этим. Кроме того, если это не хватает подробностей о том, как реализовать или если вы хотите знать о возможных подходах, не стесняйтесь спрашивать!
Создайте новую филиал GIT для новой функции или исправления ошибок, которую вы пытаетесь реализовать. Создайте эту ветвь из «Разработка», чтобы упростить слияние позже (поскольку «мастер» может не иметь всех текущих изменений).
Реализуйте и совершайте/протолкните изменения в филиале, возможно, в нескольких коммитах.
Наконец -то создайте запрос на притяжение, чтобы объединить ваши изменения в исходное хранилище. Он будет подлежит проверке кода, обсуждению и, возможно, изменения, если это необходимо.
Спасибо!
В какой -то момент SSS был перенесен от JavaScript до TypeScript, чтобы получить преимущества аннотаций типа, поскольку многие ошибки могут быть пойманы в шарике типа. Тем не менее, следует отметить, что взаимодействие webextensions с TypeScript в лучшем случае является привередливым, поскольку TypeScript предполагает, что сценарии могут импортировать код/данные из других сценариев, когда в действительности среда Webextensions имеет песочницу и редко позволяет это.
Сценарии контента не видят код из фона сценария или наоборот, и единственный способ, которым сценарии нескольких содержимого могут даже увидеть код друг друга,-если все они будут введены на одной странице сценарием фонового сценария, аналогично тому, как они будут включены в страницу HTML, как сценарии. TypeScript не имеет представления, что это так, как работают Webextensions, так что просто потому, что что -то транспилирует в JavaScript, это не означает, что WeBextension будет работать.
Примером, который работает, является то, что мы можем объявлять типы/классы в фоновом сценарии и ссылаться на них в других сценариях, поскольку только тип контроля заботится о них. Мы получаем проверку типов, и все в порядке.
Однако, если мы попытаемся добавить в эти классы некоторые методы, назначения переменных и т. Д., То их не увидят сценарии страниц содержимого. При переходе на JavaScript они останутся в качестве ссылки на код в другом скрипте, на который нельзя ссылаться во время выполнения из -за песочниц Webextensions. Это также относится к перечислениям (которые имеют конкретные значения, поэтому «данные»), если мы не объявляем их как const enum , и в этом случае типовой тираж копирует свои значения туда, где они используются вместо создания объектов JavaScript.
Таким образом, если вы видите класс полностью или частично объявлен в нескольких сценариях в этом проекте (например, как в фоновом скрипте, так и в сценарии страницы), приведенное выше - почему.
Еще одна вещь, которая может не сработать, - это использование instanceof для проверки, является ли объект определенного класса. Не делайте этого для созданных пользовательских классов, так как это может потерпеть неудачу из -за песочницы.