В продолжение темы об организации цен, решил написать этот пост. Я столкнулся с такой проблемой - есть некоторые интернет магазины, в которых, на мой взгляд, очень странный формат отображения цен или просто непривычный. Например взять тот же 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));
}
);
});
Да, все основное я вынес в настройки. Развивать скрипт можно и даже нужно. Оставляйте в комментариях идеи развития - будем воплощать!
Комментарии
Отправить комментарий