К основному контенту

Кастомный JavaScript для сайтов

В продолжение темы об организации цен, решил написать этот пост. Я столкнулся с такой проблемой - есть некоторые интернет магазины, в которых, на мой взгляд, очень странный формат отображения цен или просто непривычный. Например взять тот же Banggood. В моем варианте это русский язык сайта, но английский язык браузера. Полагаю отсюда и ноги растут. Представление цены у меня, например, 8,003 руб. Из минусов - мне не нравится разделитель разрядности запятая. Так же непривычно видеть цену без копеек. Ну и вместо букв "руб" было бы приятнее видеть денежный знак.
Да, как вариант - можно написать разработчикам сайта и высказать свои предпочтения. Сами понимает, шанс быть услышанным практически равен нулю. Но если у вас есть прямые руки и православный браузер, то можно изменить представление любого сайта под свои нужды.

Расширение для Chrome

Поискал, посмотрел - подошло. Расширение для Chrome: Custom Javascript. Позволяет применять Javascript код к любому сайту.

Необходимые библиотеки

CJS позволяет подключать библиотек jQuery, если это необходимо, но, как показывает практика, большинство сайтов уже используют эту библиотеку и ее подключение не требуется.

Алгоритм в действии

Все предельно просто! Нам нужно определить список элементов, к которым будет применен наш алгоритм. Я сделал это через классы CSS. Далее, для каждого такого элемента берем его содержимое и применяем регулярное выражение. После всех манипуляций выводим все так, как нам нужно. В моем случае это 8 003.00 Р.

Сам скрипт - пользуйтесь!

var oConfig = {
    aCss: [
        ".price.wh_cn", 
        ".price_old.wh_cn", 
        ".now", 
        ".old", 
        ".item_warehouse_price"
        ],
    sLocale: navigator.languages[0],//"ru-RU",
    bCurrency: true,
    sCurrency: "RUB",
    sIntervalSplitter: " - ",
    sThousendSeparator: ","
};
 
// console.log(navigator);
$(function() {
var sJq = oConfig.aCss.join(",");
$(sJq).each(function(index, object){
        var sValue = $(this).html(); 
        var sRes = "";
        var sRegExp = new RegExp("["+oConfig.sThousendSeparator+"0-9]+", "g");
        var regex = /[-,0-9]+/g;
 
        var aVals = [];
 
        while ((m = sRegExp.exec(sValue)) !== null) {
            if (m.index === sRegExp.lastIndex) {
                sRegExp.lastIndex++;
            }
 
            m.forEach((match, groupIndex) => {
                // console.log(match);
               match = parseInt(match.replace(oConfig.sThousendSeparator, ""));
               var sVal = oConfig.bCurrency?
               match.toLocaleString(oConfig.sLocale, { style: "currency", currency: oConfig.sCurrency }):
               match.toLocaleString(oConfig.sLocale);
            //   console.log(sVal);
                aVals.push(sVal);
            });
        }
 
        $(this).html(aVals.join(oConfig.sIntervalSplitter));
    }
);
});
Да, все основное я вынес в настройки. Развивать скрипт можно и даже нужно. Оставляйте в комментариях идеи развития - будем воплощать!

Для тех, кто в шоке

Почему именно Banggood? Потому что качество у них нормальное и кэшбэк хороший. Вообще с AliExpress тоже хороший возврат, по крайней мере я вернул уже не одну тысячу. Да что я все о своем - вот он, плагин для кэшбека!

Комментарии

Популярные сообщения из этого блога

Прямые ссылки на файлы Google диска

В предыдущей статье я рассказал, как подключить свой JavaScript файл к блогу BLOGSPOT . Но для того, что бы их подключить нужны прямые ссылки на файл, а Google диск при предоставлении общего доступа к файлу выдает ссылку на предварительный просмотр, которая никак напрямую не ссылается на файл. Для Google диска прямая ссылка на файл - это ссылка на скачивание. Ниже описаны два способа создания ссылки на скачивание на примере файла prism.js.

События для ведения таблиц

Как и всегда, в пылу проекта внезапно родилась Z табличка. Главный нюанс был в том, что она должна была хранить пароли для авторизации на стороннем сервере. Естественно, никто не хотел хранить пароли в открытом виде, а двустороннее шифрование SAP не умеет без сторонних пакетов и надстроек. Далее, все как обычно - придумали алгоритм, сделали табличку. Дело осталось за малым - нужно шифровать пароли, которые вводит пользователь. Делать отдельную программу нет смысла, поскольку ее функционал мало чем будет отличаться от сгенерированного. Вот здесь на помощь приходят события! С их помощью можно, наверное, все. По крайней мере, я не нашел чего-либо, что нельзя сделать с данными через события.

OOP ALV GRID с HTML шапкой

В этой статье хочу постараться подробно описать и привести пример, как можно создать ALV отчет с таблицей на весь экран и с HTML шапкой вверху. Я не буду описывать начальный этап, где пишется селекционный экран или делается выборка данных. Будем считать, что основа у нас есть и нам нужно просто вывести данные. Главной изюминкой является то, что нужно вывести ALV GRID на экран без использования каких-либо дополнительных элементов на экране. Step-By-Step Шаг 1. Создание окна Создаем самое простое окно с номером 100. На него не нужно кидать никаких контейнеров. Оно нам нужно только для модулей PAI и PBO и вывода на него ALV GRID.