Javascript.RU

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

Тперь вставляет все как надо, вот что в итоге у меня получилось:

echo '<span style="cursor: pointer" title="'.$tiempo.'" onclick="kide.insertSmile(\''.addslashes($r->name), ', '.'\')" class="'.KideHelper::getRango($r->rango, 'KIDE_').'">';


Осталось повесить меню на правый клик, и счастье станет полным ))))
Ответить с цитированием
  #12 (permalink)  
Старый 13.01.2021, 07:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от Ubivectel
а первоначальный код вызывать по правому клику
oncontextmenu="прежний код onclick"
Ответить с цитированием
  #13 (permalink)  
Старый 13.01.2021, 09:02
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Однако вот что выяснил в ходе экспериментов, код PHP отвечает за сообщения отправленные в чат до последнего обновления страницы, сейчас вписал: oncontextmenu и все заработало как надо, но, сообщения поступающие вновь по прежнему открывают меню, и если я правильно понял отвечает за это опять таки JS, вот этот фрагмент:

kide.insertNewContent = function(uid,name,text,url,ti,color,rango,id,sesion,yo,hora,img) {
	if (text.replace(/ /g, "") != "") {
		var c = color.length>0 ? 'style="color:#'+color+'" class="KIDE_msg"' : 'class="KIDE_dc_'+this.rangos[rango]+' KIDE_msg"';
		var div = this.$('KIDE_msgs');
		var nodo = document.createElement('div');
		var insertO = this.$("KIDE_output");
		var 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 = '';
		var tmp = '';
		if (img && kide.show_avatar) {
			var style = kide.avatar_maxheight ? 'style="max-height:'+kide.avatar_maxheight+'" ' : '';
			tmp = '<img '+style+'src="'+img+'" class="KIDE_icono" alt="" /> ';
		}
		nodo.innerHTML = s_hora+tmp+'<span style="cursor: pointer" class="KIDE_'+this.rangos[rango]+'" onclick="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();
	}
};


Попытался сделать так, заменил это:

onclick="kide.mensaje(\''+name+'\', '+uid+', '+id+', \''+url+'\', \''+ti+'\', \''+sesion+'\', '+rango+', \''+img+'\')">'+name+'</span>: <span '+c+'>'+this.filter_smilies(text)+'</span>';


На это:

onclick=kide.insertSmile(user.name  + ', ');


Но видимо напутал с синтаксисом, такая конструкция "ломает" юзерлист и пользователи вообще не отображаются, да и с правым/левым бы лучше сразу правильно сделать.

Рони, в php все верно: oncontextmenu заработал как надо по правому клику, хотя интересно, что в отличии от JS не удаляет штатное, контекстное меню браузера. Впрочем бог с ним php, поскольку очевидно что главное, что бы левый клик - ник, правый - меню работали именно на вновь поступающих сообщениях.
Ответить с цитированием
  #14 (permalink)  
Старый 13.01.2021, 09:21
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Ubivectel
в отличии от JS не удаляет штатное, контекстное меню браузера
Не надо путать хрен с пальцем, для РНР, это просто строка формируемая им для клиента. Нет в ней ни контекстных меню, никаких событий и т.п.
Ответить с цитированием
  #15 (permalink)  
Старый 13.01.2021, 09:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от Ubivectel
хотя интересно, что в отличии от JS не удаляет штатное, контекстное меню браузера.
так сделайте чтоб не было ))) пример вам был показан, надо добавить в начале фразу: горшочек не вари точка с запятой, перед кодом kide...
Ответить с цитированием
  #16 (permalink)  
Старый 13.01.2021, 10:34
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Я уяснил, что надо добавить это:

div.addEventListener('contextmenu', function(event) {
	event.preventDefault();


к этому:

nodo.innerHTML = s_hora+tmp+'<span style="cursor: pointer" class="KIDE_'+this.rangos[rango]+'" onclick="kide.mensaje(\''+name+'\', '+uid+', '+id+', \''+url+'\', \''+ti+'\', \''+sesion+'\', '+rango+', \''+img+'\')">'+name+'</span>: <span '+c+'>'+this.filter_smilies(text)+'</span>';


Но как я это не впихиваю, оно ломает юзерлист, по примеру нифига не понимаю как сделать, строки слишком разные (
Ответить с цитированием
  #17 (permalink)  
Старый 13.01.2021, 10:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Ubivectel,


oncontextmenu="event.preventDefault();прежний код onclick"
Ответить с цитированием
  #18 (permalink)  
Старый 13.01.2021, 10:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Ubivectel,
onclick="kide.insertSmile(\''+name+\', ')";
Ответить с цитированием
  #19 (permalink)  
Старый 13.01.2021, 10:56
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Как же неприятно чувствовать себя тупым)))
Этот ведь для PHP строка, если я правильно понимаю?

oncontextmenu="event.preventDefault();прежний код onclick"
Ответить с цитированием
  #20 (permalink)  
Старый 13.01.2021, 10:58
Профессор
Отправить личное сообщение для Ubivectel Посмотреть профиль Найти все сообщения от Ubivectel
 
Регистрация: 01.12.2020
Сообщений: 171

Не судите строго, я пока только по учебнику в JS "привет мир" вывожу, в самом начале я )
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменить на input по двойному клику vsco89 Элементы интерфейса 1 14.12.2020 03:59
Не работает событие по клику maxg5 jQuery 11 02.07.2018 22:36
Изменить размер шрифта абзаца по клику на кнопку klesha jQuery 5 08.10.2015 16:08
Изменить событие skillful jQuery 5 05.01.2015 19:24
jQuery: событие по второму подрят клику timyrio Общие вопросы Javascript 23 02.05.2011 01:11