|
Заблокирован
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Пишем расширения к браузерам Chrome, Firefox и Opera (не 15+, которая с движком от хрома)27.06.2014, 08:45. Показов 63941. Ответов 1
Метки нет (Все метки)
1. Что такое расширения к браузерам?
Расширения к браузерам - это программы, которые внедряются в браузер и добавляют в него новые функции или настраивают имеющиеся. Расширения к браузерам могут:
Расширения можно публиковать в магазине расширений для соотв. браузера, откуда пользователи смогут их скачивать бесплатно или покупать за деньги. Ссылки на магазины даны ниже. Не стоит путать расширения с плагинами. 2. Что представляют собой расширения и как их пишут? Расширения к браузерам обычно состоят из:
Возможна программная установка расширений. Логику расширения пишут на JS, интерфейс пользователя создают с помощью HTML+CSS, а файл настроек пишут на INI/JSON/XML. Для написания расширений достаточно блокнота. Исключение - Internet Explorer, расширения для которого пишутся на компилируемом ЯП (C#, C++, Delphi, ..) с помощью COM. Его мы здесь рассматривать не будем. 3. С чего начать? 1. Сначала Chrome. Во-первых, по нему больше всего инфы в инете. Во-вторых, он попросту проще. В-третьих, он не только популярнее сам по себе, но имеет множество клонов, которые, также как и он, основаны на Chromium и обычно совместимы с расширениями Chrome. Это Яндекс.Браузер, Амиго, Интернет от Mail.Ru... Тысячи их. 2. Потом Opera. Когда вышла Opera 15 (Opera Next) на хромовском движке, оф. документацию по расширениям к старой опере аффффтары просто потёрли, глубоко наплевав на тех, кто привык к старой опере и вообще в гробу видел хром. А таких вот топиков в своё время никто не создал. В результате инфы в инете по опере не Next почти не осталось. Мы в данном топике будем рассматривать оперу ниже 15, т.е. не Next. 3. Потом Firefox. Расширения к нему можно создавать двумя способами - как я описал в пункте 2 и каким-то левым способом с помощью специального SDK, причём способы плохо совмещаются друг с другом. Поэтому добрая половина кода в инете, касаемо огнелиса, у вас может просто не заработать. Мы в данном топике будем учиться юзать именно способ без SDK, ибо он проще. 4. Ну и потом IE. Который по вышеупомянутой причине рассматриваться в топике не будет. 4. Зачем нужен этот топик? Вон статья на хабре, вон оф. документация, вон ещё статья на хабре, что ещё надо? 1) Вам не нужно - вы и не создавайте топиков, и этот не читайте. А некоторым нужно. Мне бы в своё время пригодился. 2) По расширениям к хрому инфа и правда есть, но вот с огнелисом и оперой сложнее. Про оперу - см. выше. 3) Я не прошу отправлять этот топик в важные (хотя буду рад, если он туда попадёт), не буду его апить каждые полчаса. Так что вам он не мешает ничем. Не нужно его трогать. 4) Этот топик нужен мне. Чтобы в свободное время или просто когда лень работать продолжать углублять свои знания и расширять специализацию. И вы бы лучше занялись чем-то таким, нежели ругать и портить чужое. 5. Пишем простое расширение к Chrome. Расширение будет добавлять всплывающий баннер с текстом "Ура!" на каждую страницу в браузере, в левый-верхний угол. Итак, приступим. 1. Создаём отдельную папку. Называем её, например, HelloChromeAPI. 2. В папке создаём файл настроек расширения. Для этого запускаем блокнот, пишем такой код
Такой формат представления данных называется JSON: записи через запятую, имена их в кавычках, каждая запись может включать в себя подзаписи разного типа (тогда заключается в {}) или подзаписи одного и того же типа (тогда называется массивом и заключается в []). "name" - имя расширения, которое будет видно в браузере "version" - версия расширения, которую тоже будет видно в браузере "manifest_version", равное 2, указывает, что расширение будет совместимо с Chrome выше версии 13. Если вместо 2 указать 1, то расширение будет работать в хромах с 5 по 12. Такие хромы сейчас редки, но если уж писать серьёзный проект, то нужно сделать дубликаты расширения для обоих поколений хрома. "content_scripts" - это массив контентных скриптов (то есть скриптов, которые, как говорилось выше, выполняются на каждой странице в браузере). В данном случае в списке один элемент (он ограничен скобками {}), так как скрипт в нашем расширении будет только 1 "matches" - маска, указывающая, на каких страницах будет выполняться скрипт. * означает любую последовательность символов. Наш скрипт будет выполнять на всех страницах протокола http. Почему только http? Потому что на страницах протокола https браузер проверяет, нет ли левого html-кода, и если есть, то ругается. Может ругаться и антивирус. "run_at" указывает, на каком этапе загрузки страницы скрипт будет выполняться. Значение "document_start" = не загружено ничего (скрипт сможет вывести окошко alert или изменить window.location.href, но не сможет работать с document.body, его просто не будет) Значение "document_end" = загружен код страницы, доступны document и document.body, но могут выполнять какие-то скрипты, которые ещё просто не успели выполниться Значение "document_idle" = простой, когда никакой другой скрипт не выполняется. точнее ближайший период простоя с начала загрузки. Рекомендуется использовать для сложных ресурсоёмких скриптов, когда в то же время не требуется, чтобы скрипт выполнился прямо сразу после загрузки. "js" - это массив путей к скриптам, выполняющимся с данными matches. Скрипт один, он будет называться end.js (это будет означать, что скрипт выполняется по document_end) и лежать в подпапке content_scripts в нашей папке расширения. 3. Создадим подпапку content_scripts, а в ней скрипт end.js. В нём пропишем код
Он тоже обязательно должен быть сохранён в UTF-8. Примечание: стилей так много затем, чтобы перекрыть стили, применённые на сайте, куда вставляется баннер, и баннер на всех сайтах выглядел одинаково. 4. Установим расширение в браузер. Откроем меню браузера кнопкой справа-вверху, затем пункт Инструменты, затем выберем пункт Расширения. Или просто пройдём по ссылке chrome://extensions Поставим флажок Режим разработчика, нажмем Загрузить распакованное расширение и укажем нашу папку. 5. Теперь зайдём на любую страницу, использующую http (см. выше) mail.ru подойдёт, наш форум подойдёт, а google.ru нет. Когда страница загрузится до конца, слева-вверху появится обещанный баннер. 6. На странице расширений мы можем отключить или удалить расширение с помощью соотв. кнопок. А если мы решим изменить код manifest.json, end.js и т.д., то чтобы изменения применились, мы должны воспользоваться кнопкой Обновить. 6. Добавляем кнопочку на панель инструментов Chrome Теперь оно будет ещё добавлять кнопочку на панель инструментов хрома и при нажатии на кнопку открывать диалоговое окно. Нам понадобится Chrome 20 или новее. 1. Откроем наш файл manifest.json Изменим его таким образом
2. Создадим подпапки images и popup. В images создадим две картинки, как указано в манифесте. Картинки могут быть одинаковыми, отображается только одна, в зависимости от расширения монитора (на больших мониторах - 38x38, на маленьких - 19x19). В popup создадим файл popup.html и запишем в него такой код
3. Чтобы изменения вступили в силу, зайдём в Расширения и нажмём кнопку Обновить под нашим расширением. 4. На панели инструментов (слева вверху) появится кнопка с заданной иконкой. Нажав на кнопку, увидим окошко, в котором будет надпись "Ура!". Заметим, что размер окошка соответствует размеру, указанному в style корневого элемента popup.html (т.е. 300 x 100 пкс). Если этот размер не указывать, окошко будет таким, чтобы в него поместилось содержимое этого элемента, т.е. надпись "Ура!". 7. Добавляем иконку в расширение к Chrome. 1. Подправим манифест.
Это будет иконка расширения, отображаемая на странице расширений вместо дефолтного значка с фрагментом мозаики. Примечание: помимо иконки размером в 48 пкс, мы можем сделать иконки размером 16, 32, 128 пкс, дописав внутрь ветви "icons:" соотв. строчки, не забывая про запятые. Но это нужно только если мы решим нарисовать действительно разные иконки для расширения. Просто растянув иконку под 16, 32, 128 пкс, мы ничего не достигнем - хром это сделает и сам, где оно понадобится. Я ограничился 48 пкс. 3. Обновим расширение на странице расширений. 8. Пишем простое расширение к Opera. Расширение будет работать аналогично расширению к хрому. Опера у меня версии 12. На других не пробовал. На 15 и выше, ещё раз, работать не должно. Все файлы, как и с хромом, лучше сохранять в UTF-8, иначе кириллица будет отображаться неверно. Приступим. 1. Создаём отдельную папку. Называем её, например, HelloOperaAPI. 2. В папке создаём файл настроек расширения. Для этого запускаем блокнот, пишем такой код
Такой формат представления данных называется XML. <name> - имя расширения, которое будет видно в браузере <version> - версия расширения, которую тоже будет видно в браузере А вот никакого упоминания о скриптах в файле не будет. Мы просто создадим в папке с расширением подпапку include и файл .js с любым именем. Этого будет достаточно, чтобы скрипт работал. 3. Сказано - сделано. Создаём подпапку include и файл script_end.js
"==UserScript==...==/UserScript==" вверху - это не просто комментарий. Там указываются настройки данного скрипта. @include здесь работает по принципу "matches" из Chrome. Скрипт тоже обязательно должен быть сохранён в UTF-8. Этот скрипт добавляет код баннера в код body той страницы, на которой выполняется. 4. В папке с расширением создадим index.html. Это фоновая страница. Мы можем оставить её пустой, потому что фоновых скриптов пока нет и она нам не нужна, но в расширении для оперы она должна быть обязательно. 5. Упакуем расширение в zip-архив. Сменим его расширение с zip на oex. 6. Запустим оперу, зайдём в меню, выберим пункт Дополнения, перетащим туда oex. 7. Проверим, появляются ли баннеры при загрузке страниц. 9. Добавляем кнопку на панель инструментов Opera На панели инструментов справа-вверху появится кнопка. При нажатии на неё откроется всплывающее окошко с заданной страницей. Всё как в хроме. Нам понадобится Chrome 20 или новее. 1. Изменим фоновую страницу index.html таким образом
opera.contexts.toolbar - это класс из Opera API. У хрома тоже есть API - chrome.*. 2. Создадим подпапки images и popup. В images создадим картинку, как указано в манифесте. В popup создадим файл popup.html и запишем в него такой код
3. Чтобы изменения вступили в силу, удалим расширение и установим его обратно. 4. На панели инструментов (слева вверху) появится кнопка с заданной иконкой. Нажав на кнопку, увидим окошко, в котором будет надпись "Ура!". 10. Добавляем иконку в расширение Opera. 1. Путь к иконке указывается в файле настроек - config.xml. За него отвечает тэг icon с атрибутом src, в котором указывается относительный путь к иконке (относительно основной папке расширения). Откроем файл config.xml. Внутри <widget> добавим строчку
3. Перепакуем и переустановим расширение. В списке расширений вместо дефолтного значка (сиреневого фрагмента мозаики) будет отображаться наша иконка. 11. Пишем простое расширение Firefox. 12. Добавляем панель инструментов в Firefox. 13. Добавляем иконку в расширение Firefox. Продолжение следует... Пока что читаем здесь и экспериментируем. Пара советов и ссылок на закуску Конечно, информации из этого топика ещё недостаточно, чтобы написать любое расширение к браузеру Chrome, Firefox или Opera. Но общее представление о расширениях и особенностях их разработки вы получили. Поэтому, воспользовавшись данными ссылками в связке с гуглом, Вы при желании сможете углубиться в расширения и писать крупные, уникальные продукты. Здесь же обещанные магазины расширений. CHROME https://developer.chrome.com/extensions/ - официальная документации. Вот описание в ней контентных скриптов и кнопки browser-action: https://developer.chrome.com/e... nt_scripts https://developer.chrome.com/e... wserAction https://chrome.google.com/webs... ions?hl=ru - магазин. OPERA https://addons.opera.com/ru/extensions/ - магазин. FIREFOX https://addons.mozilla.org/ru/firefox/ - магазин. Добавлено через 2 минуты В процессе написания топика нашёл на форуме баг. В кодах JSON, XML и др. текст "https://www.cyberforum.ru/images/картинка.png" заменяется на "https://www.cyberforum.ru/images/картинка.png". То есть если написать
2
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 27.06.2014, 08:45 | |
|
Ответы с готовыми решениями:
1
Как применить стиль к браузерам Opera, Chrome (webkit) Создание расширения для Firefox. Перевод расширений Chrome на Firefox Chrome vs Opera vs Firefox |
|
Заблокирован
|
|
| 28.06.2014, 19:20 [ТС] | |
|
Ссылки для скачивания готовых расширений:
5. Пишем простое расширение к Chrome. https://yadi.sk/d/zLVexhvqVC3h9 6. Добавляем кнопочку на панель инструментов Chrome https://yadi.sk/d/4l3Ku8mjVC3k2 7. Добавляем иконку в расширение к Chrome. https://yadi.sk/d/H2h-WYzRVC3nW 8. Пишем простое расширение к Opera. https://yadi.sk/d/cYZs9-r1VC3qP 9. Добавляем кнопку на панель инструментов Opera https://yadi.sk/d/43uOx8wiVEBBT 10. Добавляем иконку в расширение Opera. https://yadi.sk/d/ELX_p8POVECJs Внимание, поправки! 1) Папка с юзерскриптом для оперы называется includes, а не include. 2) В юзерскрипте для оперы не нужны "[ url ]" и "[ / url ]" (в них заключает форум все ссылки, в том числе внутри кода, что может сделать его нерабочим). P.S. У читателей данного топика, если же такие имеются, прошу прощения за бардак в топике. Я надеюсь, со временем это будет исправлено. Когда последуют все "продолжения", которые всё ещё "следуют" Проще говоря, когда будут доделаны все планируемые расширения и инструкции как их делать, а также готовы все ссылки для скачивания расширений.P.P.S. Со всеми вопросами прошу писать в личку, дабы не усугублять сей бардак
0
|
|
| 28.06.2014, 19:20 | |
|
Помогаю со студенческими работами здесь
2
Кроссбраузерность (Firefox / Opera / Chrome) Жирний шрифт в Opera и в Chrome а FireFox норм Плохо работают браузеры Chrome, Opera, IExplorer, FireFox Не выполняется ajax-запрос в Google Chrome. В Opera и Firefox работает Вирус меняет путь к исполняемым файлам браузеров Chrome, Firefox, Opera, IE Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|