|
Заблокирован
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Пишем расширения к браузерам Chrome, Firefox и Opera (не 15+, которая с движком от хрома)27.06.2014, 08:45. Показов 63396. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|