Как стать автором
Обновить

Простейший плагинчик для Internet Explorer при помощи html, javascript и .inf

Время на прочтение2 мин
Количество просмотров2.1K
Даже если вы сами не пользуетесь IE, возможно вы пользуетесь HTML help или у вашего сайта есть пользователи на IE, которым вы хотите облегчить жизнь.

Лично мне на IE не хватало возможности Оперы выделить кусочек вебстраницы, который не оформлен как ссылка, и по нему перейти как по URL. Немного порывшись в интернете, я сварганил себе такую штуку


Получилось даже немного удобнее чем в Опере — она не показывает этот пункт меню если выделен кусок URL, а у меня он показывается для любого выделенного текста.

Плагин состоит из двух файлов: openselection.html и openselection.inf. Первый — собственно код плагина, второй содержит инструкции по его установке. Если вы предпочитаете почитать сначала документацию по теме, то вам на MSDN и сюда, а так же сюда.

А тут я приведу содержание файлов, которые у меня получились:

openselection.html

<HTML>
<SCRIPT LANGUAGE="JavaScript" defer>
var value = external.menuArguments.document.selection.createRange().text;
var protocols = ['http', 'https', 'ftp', 'mailto'];
function startsWith(s, prefix)
{
    return s.substr(0, prefix.length) == prefix;
}
function hasProtocol(s)
{
   for(i in protocols)
   {
       if (startsWith(s.toLowerCase(), protocols[i]+':'))
            return true; 
   }
   return false;
}
if (! hasProtocol(value))
    value = 'http://' + value;
external.menuArguments.open(value, '_blank');
</SCRIPT>
</HTML> 


Тут основная плагинная фишка — использование external.menuArguments вместо window — дело в том, что для плагина создается новое окно с другим контесктом безопастности (скрипт может создавать, например FileSystem object и работать с файлами), а исходное окно передается ка external.menuArguments. Если использовать window, то откроется новое окно вместо нового таба.

openselection.inf

[Version]
Signature=$CHICAGO$

[DefaultInstall]
AddReg=Add.Settings

[Add.Settings]
HKCU,Software\Microsoft\Internet Explorer\MenuExt\Open URL,,0,"%01%\openselection.html"
HKCU,Software\Microsoft\Internet Explorer\MenuExt\Open URL,Contexts,0x00010001,0x10


Тут все просто — добавляется новый ключ реестра, имя которого совпадает с именем пункта меню, с двумя значениями:
  • (deafult) — путь к html файлу (%01% обозначает папку, отткуда был запущен inf файл)
  • Context — при вызове откуда показывать этот пункт меню

Интересно, что в интернете существуют следы попыток прописать в реестр сам текст плагина в виде javascript: ссылки, но у меня на IE8 это не работает.

Буду рад, если эта штуковина кому-нибудь пригодится.
Теги:
Хабы:
+6
Комментарии6

Публикации

Изменить настройки темы

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн