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

    Даже если вы сами не пользуетесь 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 это не работает.

    Буду рад, если эта штуковина кому-нибудь пригодится.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 6

      +1
      скриншот бы какой-нибудь для демонстрации того как выглядит результат
        0
        Ops — inf файл не дотестировал — исправил контекст на 0x10

        Free Image Hosting at www.ImageShack.us

        QuickPost Quickpost this image to Myspace, Digg, Facebook, and others!
        +1
        Я бы на C# с использованием SpicIE написал. Лично мне так было бы удобнее.
          0
          спасибо за ссылку, не знал об этой штуке
        • UFO just landed and posted this here
            0
            я не в совершенстве знаю строительство расширений — не подскажете, что такое «файл расширения» мне его как cab оформлать или как?

          Only users with full accounts can post comments. Log in, please.