Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.03.2021, 13:47
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Вставить цитату
Привет Мир!
Пытаюсь добавить чату возможность вставки цитат сообщений. Нюансов очень много но по порядку. Код формирующий сообщение:

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 div = this.$('KIDE_msgs');
		let nodo = document.createElement('div');
		let insertO = this.$("KIDE_output");
		let s_hora;
		nodo.setAttribute('id', 'KIDE_id_' + id);
		nodo.setAttribute('class', 'KIDE_msg_top');
		if (this.show_hour)
			s_hora = '<span title="' + ti + '" class="KIDE_msg_hour">' + hora + '</span> ';
		else
			s_hora = '';
		let tmp = '';
		if (img && kide.show_avatar) {
			let style = kide.avatar_maxheight ? 'style="max-height:' + kide.avatar_maxheight + '" ' : '';
			tmp = '<img ' + style + 'src="' + img + '" class="KIDE_icono" alt="" /> ';
		}

		onclick = "kide.insertSmile(\''+name+\', ')";  //mod

		nodo.innerHTML = s_hora + tmp + '<span style="cursor: pointer" class="KIDE_' + this.rangos[rango] + '" onclick="kide.insertSmile(\'' + name + ', \')" oncontextmenu="event.preventDefault();kide.mensaje(\'' + name + '\', ' + uid + ', ' + id + ', \'' + url + '\', \'' + ti + '\', \'' + sesion + '\', ' + rango + ', \'' + img + '\')">' + name + '</span>: <span ' + c + '>' + this.filter_smilies(text) + '</span>';
		if (this.order == 'bottom') {
			this.insertAfter(nodo, insertO.lastChild);
		} else
			insertO.insertBefore(nodo, insertO.firstChild);
		if (!yo && this.sound == 1)
			this.play_msg_sound();
		this.ajustar_scroll();
	}
};


Попытался добавить переменную с айди кнопки которая которая будет вставлять текст:

let bquote = document.querySelector('#insertmsg');


добавить к ней событие:

bquote.onclick = "kide.insertSmile(\''+nodо+\')";


Разумеется не заработало.

Добавил функцию меняющую класс переменной "nodo"

nodo.onclick = function() { 
nodo.classList.toggle('selmsg');}


Работает. То есть сейчас Сейчас для начала нужно добавить строку которая будет по клику на элемент #insertmsg с помощью вотэтововот: kide.insertSmile добавлять данные из переменной nodo когда ей присвоен класс selmsg
Я еще сам четко в голове не оформил, как это все в итоге будет выглядеть, но с чего-то надо начинать )))
Ответить с цитированием
  #2 (permalink)  
Старый 03.03.2021, 14:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Ubivectel,
document.addEventListener("click", ({ target }) => {
    if (target = target.closest('.KIDE_msg_hour')) {
        target = target.closest('.KIDE_msg_top')
        let text = target.textContent;
        kide.insertSmile(text)
    }
});
Ответить с цитированием
  #3 (permalink)  
Старый 03.03.2021, 16:05
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Вообще не понимаю, а как его связать с кнопкой #insertmsg ?
Ответить с цитированием
  #4 (permalink)  
Старый 03.03.2021, 16:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Сообщение от Ubivectel
а как его связать с кнопкой #insertmsg ?
никак, этот код самодостаточен, для цитирования любой строки в чате.)))
Ответить с цитированием
  #5 (permalink)  
Старый 03.03.2021, 16:33
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Едрит-мадрит, у меня порой ощущение, что рони знает какой-то секретный яваскрипт, известный только ему ))))))))) куда хоть это вставить, и как пользоваться?
Ответить с цитированием
  #6 (permalink)  
Старый 03.03.2021, 16:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Ubivectel,
вставить куда угодно, перезагрузиться, и жмакать на время в строке.
Ответить с цитированием
  #7 (permalink)  
Старый 03.03.2021, 18:13
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Ubivectel,
document.addEventListener("click", ({ target }) => {
    if (target = target.closest('.KIDE_msg_hour')) {
        target = target.closest('.KIDE_msg_top')
        let text = target.textContent;
        kide.insertSmile(`[QUOTE]${text}[/QUOTE]`)// добавить теги
    }
});


filter_smilies: function(s) {
        s = " " + s + " ";
        for (let i = 0; i < this.smilies.length; i++) {
            s = s.replace(" " + this.smilies[i][0], '<img alt="' + this.smilies[i][0] + '" title="' + this.smilies[i][0] + '" src="' + this.smilies[i][1] + '" class="KIDE_icono" />');
            s = s.replace(" " + this.smilies[i][0].toLowerCase(), '<img alt="' + this.smilies[i][0] + '" title="' + this.smilies[i][0] + '" src="' + this.smilies[i][1] + '" class=KIDE_icono" />')
        }
 /* добавить замену*/
        let reg = /\[QUOTE\](.+)\[\/QUOTE\]/;
        while (reg.test(s)) {
        s = s.replace(reg, `<span class="KIDE_quote">$1</span>`)
        };
 /* добавить */
        return s;
    },


и в css добавить оформление

.KIDE_quote {
                  color: #8B4513;
              }
Ответить с цитированием
  #8 (permalink)  
Старый 03.03.2021, 18:46
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Все четко по инструкции, однако что-то не добавляет...
Вставляет без тегов
Ответить с цитированием
  #9 (permalink)  
Старый 03.03.2021, 18:50
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 166

Сорри, моск уже не работает, Ctrl + S не нажал в редакторе )
Ответить с цитированием
  #10 (permalink)  
Старый 03.03.2021, 18:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

Ubivectel,
не вижу изменений в /kide.js

там по прежнему
kide.insertSmile(text) вместо
kide.insertSmile(`[QUOTE]${text}[/QUOTE]`)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вроде видел статью, как вставить свой тег с помощью css ...но как то пробежал мимо Deff (X)HTML/CSS 2 09.07.2013 12:49
Как вставить !important в скрипт! lich Общие вопросы Javascript 2 22.05.2013 23:25
Подскажите как вставить переменную в RegExp c модификаторами Дмитрий-Solod Общие вопросы Javascript 2 16.11.2010 19:30
Mootools. Вставить html zeman Библиотеки/Тулкиты/Фреймворки 4 31.03.2009 11:24
Выделить цитату и вставить в форму за 2клика Nubi Элементы интерфейса 2 06.08.2008 12:15