пятница, 21 февраля 2014 г.

Отладка

Информация о расширении

Отлаживать будем расширение Hello World, описанное в быстром старте. Создайте и подключите его к браузеру, не забудьте на странице chrome://extensions включить “Режим разработчика”. Там же можно узнать идентификатор расширения. Выглядит он примерно так: ID: maihdofgpghpnnjniclajfepbgdhabpg.

четверг, 20 февраля 2014 г.

Кросс-сайтовые запросы

Обычные веб-страницы используют XMLHttpRequest чтобы обмениваться данными с удаленным сервером, но они ограничены same origin policy. Это правило разрешает обмен только с тем сайтом, откуда была загружена страница. Расширение браузера имеет менее строгие ограничения. Оно может обмениваться данными с любыми сайтами, указанными в свойстве permissions.

Политика безопасности

Content Security Policy (CSP) — стандарт, определяющий HTTP-заголовки Content-Security-Policy и Content-Security-Policy-Report-Only. Эти заголовки сообщают браузеру с какими хостами он может работать. Белый список, черный список.

Поддерживается всеми современными браузерами.

Т.е. если на загруженной странице вдруг затесались ссылки на сайты, работа с которыми не разрешена, то загружаться они не будут. Картинки, скрипты, фреймы – все это будет заблокировано. Это значит что даже если злоумышленник прорвал первый рубеж обороны и как-то внедрил свой злонамеренный код, то до HTTP-заголовков добраться намного сложнее. Более того, браузер немедленно уведомит веб-сервер о нарушении.

И этот же стандарт вполне применим для расширений. Он дополняет механизм permissions, который позволяет явно указывать какими возможностями может пользоваться расширение.

a11y

a11y = A[ccessibilit]y (доступность)

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

Рассмотрим, как же эта тема касается разработки расширений для браузера Chrome

activeTab

Дает временный доступ к текущей вкладке, когда пользователь явно вызывает для нее расширение:

Временный – значит до тех пор пока вкладка не будет закрыта, или пока в ней не будет перехода на другую страницу.

Хорошо тем, что пользователю не выдается никаких предупреждений и при этом он сам решает активировать расширение для конкретной страницы или нет.

Content Scripts

Это JavaScript выполняемый в контексте веб-страницы. Используя DOM он может получать данные из этой страницы или модифицировать ее.

среда, 19 февраля 2014 г.

Страницы управляемые событиями (Event Pages)

Это разновидность фоновых (Background) страниц, которые не хранятся в памяти постоянно, а загружаются только когда возникают связанные с ними события. Есть еще фоновые страницы, которые хранятся в памяти постоянно (persistent). Хотя и те и другие “фоновые”, но обычно, если в документации речь идет про фоновые, то имеются ввиду постоянные.

Гугл рекомендует разработчикам переносить свои наработки на event-страницы, что как бы намекает, что в один прекрасный день останутся только они.