Ускоритель для IE или GenericHandler.ashx своми руками
Сайтостроение | создано: 08.01.2011 | опубликовано: 08.01.2011 | обновлено: 13.01.2024 | просмотров: 5036
После выхода в свет Internet Explorer (далее IE) версии номер 8 броузер помимо неких программных изменений и нововведений в интерфейсе получил еще и дополнительные расширенные функции. Одна из таких функций ускорители (Accelerators). В этой статье я расскажу как можно использовать этот самый ускоритель и реально ускорить взаимодействие пользователя с сайтом.
На моем сайте есть лента анекдотов (на главной странице), так вот, чтобы добавить на ленту новую запись надо зайти на сайт, нажать кнопку, которая откроет форму добавления, запонить поля, выбрать параметры и нажать кнопку "добавить". Это долго и не всегда хочется тратить на это время. Хочу чтобы было просто: нашел что-то интересное и смешное на каком-нибудь сайте, выделил, нажал на ускоритель и всё уже на сайте. Итак...
Для начала потребуется создать обработчик запросов (я выбрал название LentaIE.ashx), который будет получать данные от ускорителя. А потом создать специальный xml-файл, который должен соответствовать спецификации. Описание спецификации достаточно подробно описано MSDN, поэтому я не буду этого делать, а просто приведу готовый код:
<?xml version="1.0" encoding="UTF-8"?> <os:openServiceDescription xmlns:os="http://www.microsoft.com/schemas/openservicedescription/1.0"> <os:homepageUrl>http://www.calabonga.com</os:homepageUrl> <os:display> <os:name>Поделиться анекдотом</os:name> <os:icon>http://www.calabonga.com/images/musorka.ico</os:icon> <os:description>Мусорка - рассказать разместить свой анекдот</os:description> </os:display> <os:activity category="Share"> <os:activityAction context="selection"> <os:execute action="http://www.calabonga.com/h/LentaIE.ashx?content={selection}" method="post"> <os:parameter name="content" value="{selection}" type="text" /> </os:execute> </os:activityAction> </os:activity> </os:openServiceDescription>
Теперь что касается обработчика (.ashx). Создадим новый при помощи шаблона Visual Studio. Вновь созданный файл имеет следующий вид:
public class LentaIE : IHttpHandler { public void ProcessRequest(HttpContext context) { } public bool IsReusable { get { return false; } } }
А теперь давайте напичкаем этот класс полезностями. Во-первых, создадим поле которое будет экземпляром класса унаследованного от DataContext (LINQ to SQL). У меня это будет так:
private DbDataContext db = new DbDataContext();
А теперь "раздуем" метод ProcessRequest до безобразия. Это, к слову сказать, единственный метод и именно он будет делать всю работу:
public void ProcessRequest(HttpContext context) { string content = string.Empty; if (context.Request.QueryString["content"] != null) { content = context.Request.QueryString["content"].ToString(); } if (!string.IsNullOrEmpty(content)) { Lenta l = new Lenta(); l.author = "аноним"; l.lentaDate = DateTime.Now; l.lentaText = content; l.mapID = MusorkaHelper.GetLentaMapID(); l.rating = 0; l.voteCount = 0; db.Lentas.InsertOnSubmit(l); db.SubmitChanges(); } }
Готово! Надо теперь установить этот ускоритель пользователю, чтобы он смог применять его на деле. Закинув xml-файл в папку на сервер, в html-коде главной страницы добавим код:
<a href="#" onclick="window.external.AddService('xml/lentaie.xml');" > установить ускоритель </a>
Ссылку на установку ускорителя Вы можете наблюдать в самом низу любой страницы нашего сайта. Установите ускоритель в IE и попробуйте как он работает, найдите анекдот или историю на какой-нибудь странице, выделите текст, нажмите правую кнопку и выберите ускоритель "Поделиться анекдотом". Откроется страница нашего сайта, где на главной странице на ленте анекдотов уже бдут присутствовать свежая запись!