…Как понимаю, вы уже прочитали общий обзор и хотите поглубже разобраться что и как в этом аддоне…) Всё верно, работа с любым расширением требует знания и понимания всех его особенностей, это позволит вам избежать "непонятных" проблем при эксплуатации аддона. В этой статье:
Отличия от оригинала и аналоговПо отношению к исходному аддону и его аналогам в Context: IP Geolocation RU имеются следующие отличия:
Особенности эксплуатации и условия примененияПри всей кажущейся внешней простоте, работа с расширением "Context: IP Geolocation" предусматривает знание и понимание некоторых важных моментов для его корректной и беспроблемной эксплуатации. Итак, о чём желательно помнить при работе с этим расширением: 1. Для получения гео-данных используется бесплатный API whois‑агрегатора ip‑api.com. При работе с ним следует помнить об ограничении – не более 45 запросов* в минуту с одного IP‑адреса! Если этот лимит превышен, ваш IP автоматически попадает в "чёрный список" Если указанного лимита недостаточно, во избежание этой ситуации можно использовать запросы через прокси. Ранее сервис декларировал возможность ручного разбанивания IP-адреса, на текущий момент такая функция недоступна и самостоятельный вывод из "чёрного списка" невозможен. Это, предположительно, связано с текущей политикой монетизации сервиса, поэтому будьте внимательны и не переусердствуйте с запросами.) 2. В некоторых редких случаях сервис IP-API может выдавать ошибку доступа (или превышение таймаута – 15 сек.). Для решения этой проблемы в аддоне предусмотрена проверка, запуск – динамически создаваемой (только при ошибке) кнопкой "Проверить доступ". При недоступности сервиса с текущего IP‑адреса можно проверить его работоспособность и другим способом (онлайн). Эта же проверка запускается по той же кнопке, при ошибке быстрой проверки, действие по её нажатию соответственно изменяется. 3. При отправке запроса гео-данных через прокси следует помнить о том, что: Прямой запрос на подтверждение использования прокси выдаётся однократно и только при первой установке. Режим переключается соответствующей "галкой" в строке "Анонимный прокси" только при выводе в попап-окне. При ошибках доступа через прокси режим можно отключить и непосредственно в окне сообщения об ошибке. 4. Все сообщения о возможных ошибках обработки "неправильных" URL выдаются текстом в инфо-блоке. Внимательно читайте эти сообщения, в них также содержатся подсказки о возможных причинах проблемы и конкретных способах её решения. 5. В общем случае инфо-блок с данными выводится в левом верхнем углу текущей страницы поверх её содержимого. Если программная инжекция кода недоступна, выходная инфо-таблица формируется в отдельном попап-окне. Оба варианта вывода работают одинаково, все функции встроенного инфо-блока и отдельного окна аналогичны. 6. В аддоне нет прямой инжекции контент-скриптов и стилей – всё грузится в отдельный (собственный) фрейм. В текущую страницу (если возможно) при этом добавляется только динамический временный код, без инжекта CSS. Свой фрейм позволяет исключить перекрёстное влияние имеющихся на странице CSS, в частности – эта накладка была очень хорошо заметна на этом сайте…) Возможные ограничения и известные проблемы1. Все вопросы по неработоспособности внешних сервисов не связаны с функционалом этого аддона. Проблемы могут проявляться при изменениях функций сервисов или из-за частных ошибок сети или браузера. Подобные "нестыковки" решаются в новых версиях аддона заменой сервисов на аналогичные. 2. SRWare Iron 31: крэш браузера при вызове в меню функций, связанных с расширениями (в т.ч. и своих). Проблема проявляется в контекстном меню инфо-блока и только если он отображается в отдельном окне, во фрейме всё работает нормально. Это не является проблемой собственно аддона: проверка на версиях SRWare Iron 29/36/49 и в других браузерах такой проблемы не выявила. 3. Хром-браузеры версий 57+: могут быть проблемы с отображением данных на сайте smart-ip.net. Некоторые страницы и данные с этого сайта просматриваются при переходах с отдельных ссылок или кнопок в аддоне. Это не является проблемой собственно аддона: все вопросы по неработоспособности страниц – к владельцам сайта. 4. Хром-браузеры версий 70+: могут быть отказы в работе по http-протоколу (незащищённому). Это не является проблемой собственно аддона: все вопросы по отламыванию http-протокола – к гуглу…) 5. Возможный конфликт с uBlock Origin с подпиской EasyPrivacy: запрет запросов к сервису гео-данных. Обсуждение проблемы смотрим отсюда и далее, решение – отключить эту подписку в блокировщике или настроить исключения для сайта ip-api.com. Это не является проблемой собственно аддона и относится только к частной настройке различных блокировщиков. Технические детали разработкиНиже приведены технические особенности расширения и некоторые подробности по исходному коду. Исходный код, интерфейс и APIContext: IP Geolocation RU не использует для работы никакие сторонние библиотеки (привет любителям JQuery)). В коде применён только чистый JS (ES5), все неподдерживаемые в "старых" браузерах функции заменены на аналоги. Скрипты работают в "строгом" режиме – для гарантированного выполнения функций и облегчения отлова ошибок. Аддон загружается только в момент вызова, не имеет фонового процесса и не занимает память в покое. Кроме того, добавлена функция ускоренной выгрузки расширения из памяти после выполнения требуемых действий. И более того, при закрытии фрейма с инфо-блоком производится автоматическая "зачистка" всего инжектированного кода, "своих" переменных и стилей, после этого на родительской странице не остаётся никаких добавленных элементов, скриптов или "слушателей" событий. Расширение работает полностью автономно. Настройки также автономны и сохраняются только в локальном хранилище самого аддона, синхронизации нет. Для работы с хранилищем применяется API chrome.storage. Запрос отдельного разрешения [ "storage" ] в манифесте при этом необязателен и не указан. Для работы со вкладками и отдельными окнами задействуется API chrome.tabs. С помощью этого API осуществляется непосредственный инжект дополнительного кода будущего фрейма с данными и запускается дальнейший процесс получения и отрисовки этих данных в созданном фрейме. Прямого запроса прав доступа для указанного API при этом не требуется, в манифесте аддона запрашивается только разрешение activeTab, упрощающее действия на текущих страницах. Интерфейсная часть самого аддона используется только для запуска процесса создания информационного блока с данными на текущей странице или в отдельном попап-окне. Все остальные функции и возможности, включая интерфейс управления, содержатся в скрипте инжектируемого кода. В контекстном меню страницы интерфейс расширения представлен единственным пунктом, доступным на всех элементах страницы. Для работы с контекстным меню применяется стандартный API chrome.contextMenus. Для вызова функции создания инфо-блока по горячей клавише используется API chrome.commands. Для обеспечения корректной работы аддона на всех вкладках, включая локальные* и служебные страницы, в манифесте запрашивается разрешение [ "*://*/*" ]. * При этом не требуется указания разрешения на работу с локальными файлами, но, хотя в блоке аддона на странице chrome://extensions соответствующий переключатель отсутствует, построение фрейма для таких страниц доступно полностью. Дополнительные примечания по кодуПрактических ограничений по версии браузера не имеется, используемые API работают в версиях 25+ (ограничение "снизу" обусловлено только применением API вызова по хоткею). Язык интерфейса – только русский (локализация жёсткая, зашита в коде), другие* локализации отсутствуют. Это связано со значительным упрощением кода, а также с тем, что при создании расширения автор в первую очередь ориентируется на русскоязычных пользователей. * Впрочем, если "дело пойдёт", прикрутить ещё и "басурманский" не является особой проблемой…) Решпекты и пивас :)Личная благодарность автора в сочетании с вышеуказанным – камрадам:
Ссылки для интересующихся
| ||||||||||
Бармалей 04.02.2019 17.10.2020 273 Общие технические сведения о разработке
|
Всего комментариев: 0 |