Здравствуй, %username%!

При серфинге ВКонтакте, постоянно переходя по ссылкам (открывая в новой вкладке) внутри самой соц. сети. У меня всегда возникали проблемы с ссылками, которые были привязаны к безопасному протоколу, как же я сидел через небезопасный протокол. Как то мне это всё надоело, и я решил написать собственное расширение и заодно разобраться в Google Chrome API. Прочитав пару статей на Хабре и разобравшись в принципе работы расширений я приступил к работе.

Что будет делать данное расширение:
  • Получение протокола, активной вкладки браузера;
  • Замена всех протоколов у ссылок на странице, которые отличаются от полученного протокола (активной вкладки).

Принцип написания расширений

На Хабре, есть не мало подробных статей по данной тематике, поэтому я не буду вклиниваться в суть пошагового создания расширения для Google Chrome!

Создаём файл манифеста

manifest.json
{
    "manifest_version": 2,

    "name": "uReplaceProtocol",
    "version": "1.0",

    "permissions": [
        "*://vk.com/*"
    ],

    "content_scripts": [
        {
            "matches": [ "*://vk.com/*" ],
            "js": ["jquery.js", "uCore.js"]
        }
    ]
 }


Пишем код

  • Скачиваем jquery.js с сайта jquery.com. Сохраните его в директорию Вашего проекта (не забудьте переименовать его в jquery.js);
  • Создайте файл uCore.js.

uCore.js
$(function ()
{
    var uProtocol = window.location.protocol.replace(/:/g, '');
    var uHref     = null;
    var uIndexOf  = (uProtocol == 'http') ? 'https://vk.com' : 'http://vk.com';

    setInterval (function()
    {
        $('a').each(function ()
        {
            if (uHref = $(this).attr('href'))
            {
                if ((uHref.indexOf(uIndexOf) + 1) && (uHref.indexOf('login.vk.com') == -1))
                {
                    if (uProtocol == 'http')
                    {
                        uHref = uHref.replace('https:', 'http:');

                        $(this).attr('href', uHref);
                    }
                    else
                    {
                        uHref = uHref.replace('http:', 'https:');

                        $(this).attr('href', uHref);
                    }
                }
            }
        });
    }, 100);
});


Вот собственно и всё. Я не JS-специалист, потому уж не пинайте.