Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавить cookies (https://javascript.ru/forum/misc/81972-dobavit-cookies.html)

Ubivectel 23.02.2021 10:23

Добавить cookies
 
Здравствуйте товарищи.

Потребовалось добавить сайту динамическое изменение размера шрифта для отдельных элементов, в итоге получился вот такой код:

$(document).ready(function(){
       var originalSize = $('.KIDE_msg_top').css('font-size');
       var originalSize = $('.ulcontent').css('font-size');
       var originalSize = $('#KIDE_txt').css('font-size');
      // reset
       $(".resetMe").click(function(){
      $('#KIDE_output').css('font-size', originalSize); 
      $('.ulcontent').css('font-size', originalSize); 
      $('#KIDE_txt').css('font-size', originalSize); 
      
       });
      
       // Increase Font Size
       $(".increase").click(function(){
      var currentDivSize = $('#KIDE_output').css('font-size');
      var currentDivSize = $('.ulcontent').css('font-size');
      var currentDivSize = $('#KIDE_txt').css('font-size');
      var currentDivSize = parseFloat(currentDivSize) + 1;
      $('#KIDE_output').css('font-size', currentDivSize);
      $('.ulcontent').css('font-size', currentDivSize);
      $('#KIDE_txt').css('font-size', currentDivSize);
      
      return false;
       });
      
       // Decrease Font Size
       $(".decrease").click(function(){
      var currentDivSize = $('#KIDE_output').css('font-size');
      var currentDivSize = $('.ulcontent').css('font-size');
      var currentDivSize = $('#KIDE_txt').css('font-size');
      var currentDivSize = parseFloat(currentDivSize) - 1;
      $('#KIDE_output').css('font-size', currentDivSize);
      $('.ulcontent').css('font-size', currentDivSize);
      $('#KIDE_txt').css('font-size', currentDivSize);

      return false;
       });
      });


Все работает, вот только он сбрасывает значения на дефолтные при каждом обновлении страницы, а очень бы хотелось, что бы запоминал на время сессии. Однако сколько не бился с куками, не удается правильно их прописать. :help:

рони 23.02.2021 10:50

Ubivectel,
бессмысленно писать имя переменной несколько раз

Ubivectel 23.02.2021 10:53

Да очень догадываюсь, что сделал громоздко и не рационально, но как упростить пока не понял

рони 23.02.2021 11:27

изменение размера шрифта по клику и сохранение
 
Ubivectel,
<!DOCTYPE html>
<html>
<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
$(function(){
       var current = Number(localStorage.getItem("font") || 18);
       function setSize(n)
       {
       if(n === '') current = 18;
       else current += n;
       localStorage.setItem("font", current.toString());
       var font = {'font-size' : `${current}px`}
       $('#KIDE_output, .ulcontent, #KIDE_txt').css(font);
       }
       setSize(0);
       // reset
       $(".resetMe").click(function(){
       setSize('')
       });
       // Increase Font Size
       $(".increase").click(function(){
       setSize(1)
       });
       // Decrease Font Size
       $(".decrease").click(function(){
       setSize(-1)
       });
});
    </script>
</head>
<body>
<button class="resetMe">resetMe</button>
<button class="increase">increase</button>
<button class="decrease">decrease</button>
<div id="KIDE_output">KIDE_output</div>
<div id="KIDE_txt">KIDE_txt</div>
<div class="ulcontent">ulcontent</div>
</body>
</html>

Ubivectel 23.02.2021 11:50

Спасибо рони, как всегда все заработало, но хоть убей не понимаю почему первый кривой код куки не писал, а твой все записывает без дополнительных телодвижений )))

рони 23.02.2021 12:19

Ubivectel,
https://developer.mozilla.org/ru/doc...w/localStorage

Ubivectel 27.02.2021 10:58

В продолжение;
Попытался проделать тоже самое с цветом шрифта, как я понял это оно:

kide.insertNewContent = function (uid, name, text, url, ti, color, rango, id, sesion, yo, hora, img) {
	if (text.replace(/ /g, "") != "") {
		let c = color.length > 0 ? 'style="color:#' + color + '" class="KIDE_msg"' : 'class="KIDE_dc_' + this.rangos[rango] + ' KIDE_msg"';


Попробовал так:

let c = localStorage.getItem(color.length > 0 ? 'style="color:#' + color + '" class="KIDE_msg"' : 'class="KIDE_dc_' + this.rangos[rango] + ' KIDE_msg"');


Но не прокатило, вообще цвет перестал работать.

Ubivectel 27.02.2021 11:16

Однако засомневался, не тут ли надо править:

save_config: function(param, value) {
        let config = document.cookie.match(/kide_config=([^;]*)/);
        if (config && config[1]) {
            config = decodeURIComponent(config[1]);
            if (config.search(eval('/' + param + '=/')) > -1)
                config = config.replace(eval('/' + param + '=[^;]*/'), param + '=' + value);
            else
                config += ';' + param + '=' + value;
        } else
            config = param + '=' + value;
        document.cookie = 'kide_config=' + encodeURIComponent(config) + '; path=/';

рони 27.02.2021 14:16

Ubivectel,
не могу подсказать, информации недостаточно.

Ubivectel 27.02.2021 15:08

Не пойму какой именно фрагмент кода выложить, вот оба файла

Файл с первым фрагментом:

https://noviy-kovcheg.ru/components/...ult/js/kide.js

строка: 84

второй:

https://noviy-kovcheg.ru/components/com_kide/js/base.js

строка: 366

рони 27.02.2021 15:56

Цитата:

Сообщение от Ubivectel
Не пойму какой именно фрагмент кода выложить, вот оба файла

пока не ясно даже, что вы хотите сделать, поэтому неизвестно где копать.
Цитата:

Сообщение от Ubivectel
Попытался проделать тоже самое с цветом шрифта,

увы это ни о чём.

Ubivectel 27.02.2021 16:03

Аааааа, я имею ввиду что бы cookie запоминал выбранный цвет шрифта, так же надолго как выше это сделали с его размером, сейчас он если не ошибаюсь помнит его только на протяжении сессии.

рони 27.02.2021 16:49

Ubivectel,
а кнопочка выбора цвета есть? а кнопочка сохранения? )))

Ubivectel 27.02.2021 17:09

Так выглядит блок выбора цвета:

https://skrinshoter.ru/p/270221/o9ltkV.png?download=1&name=%D0%A1%D0%BA%D1%80%D0%B 8%D0%BD%D1%88%D0%BE%D1%82%2027-02-2021%2016:57:05.png

Это код который выводит палитру как я понимаю (сами цвета лежат в массиве JS)

<a href="" id="KIDE_mensaje_img_enlace"><img id="KIDE_mensaje_img" src="<?php echo $this->include_html('otras', 'blank.png'); ?>" alt="" class="KIDE_avatar" /></a>


А вот и кнопочка "сохранить"

<button onclick="kide.save_options()"><?php echo JText::_("COM_KIDE_SAVE"); ?></button>

рони 27.02.2021 18:46

Ubivectel,
находим kide.onLoad добавляем красное
kide.onLoad(function() {
kide.avisar.handleVisibility();
*!*
let localColor = localStorage.getItem("localColor");
if(localColor){
kide.color = localColor;
kide.save_options();
};
*/!*
}, function() {});


находим save_options добавляем фигурные скобки и строку
save_options: function() {
        this.show('KIDE_opciones', false);
        *!*
        if (this.color){
        localStorage.setItem("localColor", this.color);
        this.save_config("color", this.color);
        }
        */!*
        this.save_config("ocultar_sesion", this.attr('ocultar_sesion', 'checked') ? 1 : 0);
        if (this.form("KIDE_template") != this.template) {
            this.save_config("template", this.form("KIDE_template"));
            location.reload();
        }
    },

рони 27.02.2021 18:54

Ubivectel,
файл kidecustom.js

все $( заменить на jQuery(
document.addEventListener("DOMContentLoaded", function (event) {
    let cat = new Array(
        "Иди в жопу!",
        "Че надо?",
        "Отлезь гнида!",
        "Бухать - это вам не спортом заниматься.<br \/> Тут здоровье нужно!",
        "Ну-с... Причиним вред здоровью!",
        "Пей до дна - проснешься не одна!",
        "Вот мне сейчас очень хочется выпить, но с тобой я этого делать не буду!",
        "Любая грязь мерещится, как сказочный пейзаж,<br \/> когда в желудке плещется C2H5OH.",
        "Водка гадость, водка - яд!<br \/> Но сто грамм не повредят!",
        "За тех, кто любит тех, кто любит нас!",
        "Желаю что бы все!",
        "Нокатем!",
        "Выпьем зелья для веселья!",
        "Якщо людына не пье, вона або хвора, або падлюка!",
        "Бросаю пить! Ёщё раз! Не добросил.",
        "За сбычу мечт!",
        "Да замахни уже без тоста, нагло и по хамски.",
        "Лучше поздно, чем не до дна!",
        "Выпьем за тех, кто не пьёт!",
        "Когда б не состоялся вынос,<br \/> за то чтоб мы вас а не вы нас!",
        "Мы трижды выпили, пока искали повод!",
        "Пьянству – бой! Так выпьем перед боем!",
        "Ручки, ножки стали зябнуть –<br \/> не пора ли нам дерябнуть?!",
        "Выпьем за успех нашего безнадежного дела!",
        "До свидания! Трезвыми мы с вами сегодня не увидимся!",
        "За одмина!"
    ),
        randomize = cat[Math.floor(Math.random() * cat.length)];
    document.querySelector('.quote_item').innerHTML = randomize;
});
//Font resize
jQuery(function () {
    let current = Number(localStorage.getItem("font") || 12);
    function setSize(n) {
        if (n === '') current = 12;
        else current += n;
        localStorage.setItem("font", current.toString());
        let font = {
            'font-size': `${current}px`
        }
        jQuery('#KIDE_output, .ulcontent, #KIDE_txt, #privado_full_x').css(font);
    }
    setSize(0);
    jQuery(".resetMe").click(function () {
        setSize('')
    });
    jQuery(".increase").click(function () {
        setSize(1)
    });
    jQuery(".decrease").click(function () {
        setSize(-1)
    });
    // Hide UserList in
    const ulcontent = document.querySelector('.ulcontent');
    const ulnone = document.querySelector('#ulnone');
    ulnone.addEventListener('click', ulnoneClick);
    function ulnoneClick() {
        if (ulcontent.classList.contains("ulhidden")) {
            ulnone.textContent = '<<<';
        }
        else {
            ulnone.textContent = '>>>';
        }
        ulcontent.classList.toggle("ulhidden");
    }
    // 	Hide UserList out
    // Clock in
    (function (global) {
        "use strict";
        function Clock(el) {
            let document = global.document;
            this.el = document.getElementById(el);
            this.months = ['Янв', 'Фев', 'Марта', 'Апр', 'Мая', 'Июня', 'Июля', 'Августа', 'Сент', 'Окт', 'Нояб', 'Дек'];
            this.days = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'];
        }
        Clock.prototype.addZero = function (i) {
            if (i < 10) {
                i = "0" + i;
                return i;
            }
            return i;
        };
        Clock.prototype.updateClock = function () {
            let now, year, month, dayNo, day, hour, minute, /*second, */result, self;
            now = new global.Date();
            year = now.getFullYear();
            month = now.getMonth();
            dayNo = now.getDay();
            day = now.getDate();
            hour = this.addZero(now.getHours());
            minute = this.addZero(now.getMinutes());
            //        /*second = this.addZero(now.getSeconds());*/
            //        result = this.days[dayNo] + ". " + day + " " + this.months[month] + ". " + year + " - " + hour + ":" + minute;
            //С классами
            result = "<span class='day'>" + this.days[dayNo] + ". " + day + " " + this.months[month] + ". " + year + "</span> - <span class='time'>" + hour + ":" + minute + "</span>";
            self = this;
            self.el.innerHTML = result;
            global.setTimeout(function () {
                self.updateClock();
            }, 10000); // Время обновленния в миллисекундах
        };
        global.Clock = Clock;
    }(window));
    function addEvent(elm, evType, fn, useCapture) {
        "use strict";
        if (elm.addEventListener) {
            elm.addEventListener(evType, fn, useCapture);
        } else if (elm.attachEvent) {
            elm.attachEvent('on' + evType, fn);
        } else {
            elm['on' + evType] = fn;
        }
    }
    addEvent(window, "load", function () {
        if (document.getElementById("clock")) {
            let clock = new Clock("clock");
            clock.updateClock();
        }
    });
    // Clock out
});

Ubivectel 27.02.2021 19:12

И как всегда рони шЫкарен. Сенкс :thanks:


Часовой пояс GMT +3, время: 10:11.