Google Chrome

индекс
223,70

Chrome HabraMail Extension (и favicon method)

В продолжение темы.

На этот раз, устав от обычной почты хабра (от бесконечного обновления страниц, перехода по ссылкам и т.д.), я решил написать небольшое расширение для google chrome, которое должно упростить повседневные задачи хабра-человека.

Знакомьтесь — ваш друг, HabraMail!

Это, пока что, beta версия (много чего предстоит доработать), но начать пользоваться ей можно уже сейчас.

UPD: Исходный код

Остальное под катом:

Описание



После установки, на любой странице хабра, в правом нижнем углу будет отображаться его иконочка.
image
Щелкаем по ней и выезжает небольшое окошко с последними сообщениями в нашем «хабраящике».
image
Нажимаем на тему сообщения, и плавненько, без перезагрузок, получаем окошко с нашим сообщением.
image
Жмем на надпись «написать» или на имя автора(слева от темы сообщения), и появляется форма нового сообщения.
image
В форме просмотра, кстати говоря, можно еще и удалять сообщение.

Техническая реализация


Как только я начал писать это расширение — сразу столкнулся со следующего рода проблемой: хоть chrome extensions и могут отправлять кросс-доменные запросы, но при этом в заголовке запроса будет ставиться свойство «Origin», равное url'у страницы, с которой он отправляется.

Все бы ничего, да сервер хабрахабра отказывается принимать запросы с отличным от нужного Orgin.

И тут приходит на помощь favicon метод, о котором я вам и расскажу (вполне вероятно, что я не первый, кто до этого додумался).

Favicon метод


И решил я делать кросс-доменный запрос используя iframe (content scripts подключаются ведь и туда тоже). Но вот беда — самая маленькая страница, которую я смог найти (искал я, правда, недолго) — это «ошибка 404». Конечно же, меня это не устроило, и я начал искать «альтернативное» решение.

Случайно заметил, что расширение может подключаться даже на страницу, где кроме картинки нет и вовсе ничего (например,http://example.com/example.png).

Напомню, что задача была в том, чтобы отправить запрос с домена username1.habrahabr.ru(или просто habrahabr.ru) на домен username2.habrahabr.ru.

И, используя «находку с картинкой», в моем расширении, я решил её следующим образом: вместо иконки ставим iframe без border с фиксированной шириной и высотой, в котором загружается следующий url: http://username2.habrahabr.ru/favicon.ico. В этот iframe вставляется content script, который общается с основной страницей (username1.habrahabr.ru) через расширение (используя chrome.extension.connect). Скрипт на основной странице посылает запрос к расширению, оно посылает в iframe, а он назад, и расширение возвращает ответ скрипту.

Вот такой вот получился метод отправки cross-origin запросов в chrome extensions.

С нетерпением жду отзывов и предложений!
+44
24 февраля 2010, 21:50
6

комментарии (25)

+16
crea7or #
TM должны бы уже вам приплачивать ;)
+5
domin #
Ну в любом случае найден простой и красивый выход из сложной ситуации. А это всегда клёво ))
+2
foxdzr #
вот спасибо, полезная вещь
+2
donnerjack13589 #
не за что, буду рад отзывам!
+2
SunexDevelopment #
Молодцы! Спасибо! :) И еще было бы нереально супер, если бы Вы прикрутили к Хабре полноценный текстовый редактор :) И к комментам и к статьям :)
+4
donnerjack13589 #
Не за что! Можно попробовать )
0
Twinger #
классная штука!
было бы здорово если бы вы прикрутили туда монитор личных комментариев ± )
+1
TuKTeeK #
А мне трактор прикрутите, если можно.
+4
py3u #
что Вам в этом-то расширении не хватает?
+1
kuzvac #
Замечательно!
0
Demir0 #
Спасибо огромное.
+4
Pruntoff #
А вы не могли бы помочь Гуглу доделать Хром для Mac? Как дополнение к «Хабрапочте» конечно :)
+1
Could #
Суперское расширение, спасибо! Но не хватает возможности ответа, на существующее сообщение. Потому что сейчас, чтобы ответить приходится вписывать вручную логин. А так, всё супер! Ждём от вас новых расширений :)
0
donnerjack13589 #
Можно щелкнуть по логину внутри сообщения(слева от кнопки удалить) ;)
+1
Could #
Оо, спасибо!
+1
grafmishurov #
Яндекс словарям бы расширение к Хрому, как у Википедии.
+1
kossmoss #
С такими темпами скоро у нас будет столько расширений к Хабру, что сам Хабр нужен будет только для хранения аккаунтов и plain-text материалов (последнее, в принципе, тоже не обязательно — все материалы будут распространяться между пользователями по принципу p2p)
+1
selection #
Все благодарствия автору, хорошие вещи делаешь.
+1
donnerjack13589 #
спасибо
+1
Kuper #
Неплохо… Искал популярную фразу "… сделал на скорую руку..."
+1
bo883 #
Спасибо огромное
0
donnerjack13589 #
не за что
0
Shagrost #
В избранное и установить :) Спасибо.
0
sofcase #
За favicon метод спасибо, может как нить столкнусь с такой же проблемой и тогда смогу решить методом автора, да и само решение таки интересное :)
+1
donnerjack13589 #
Не за что )

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.