ОсновноеRadiotalkПользовательское
MPCHAT - CMS хостинг чатов для профессионалов
90   •   Посмотреть все темы

Контекстное меню в никлисте

 

95
удалён @userka
Задумала сделать контекстное меню в никлисте, появляющееся при клике правой кнопкой мыши на ник, с командами: игнор, будильник и т.д. Кое-что получилось, но до совершенства далеко:
Показать текст

Собственно вопрос: как сделать, чтобы меню адекватно исчезало? В мозилле и опере onmouseleave срабатывает как надо, но не работает в хроме, а домучить onmouseout у меня мозгов не хватает. Прошу помощи.

Отредактировано userka - 26.06.2013
2615
Сергей @Pegass
Ну нет такого события в спецификации как onmouseleave есть onmouseout, его и используйте, вместо первого
onmouseleave это вообще событие из IE)))

Отредактировано Pegass - 26.06.2013
95
удалён @userka
Pegass пишет:

Ну нет такого события в спецификации как onmouseleave есть onmouseout, его и используйте, вместо первого
onmouseleave это вообще событие из IE)))

Кабы знать, как. )))

2615
Сергей @Pegass
userka пишет:

Pegass пишет:

Ну нет такого события в спецификации как onmouseleave есть onmouseout, его и используйте, вместо первого
onmouseleave это вообще событие из IE)))

Кабы знать, как. )))

заменить одно на другое не?

95
удалён @userka
Pegass пишет:

заменить одно на другое не?

Если бы всё было так просто, я бы вообще не парилась. В том то и дело, что работает неадекватно. **********, но как применить что-то пока не соображу.

2615
Сергей @Pegass
userka пишет:

Pegass пишет:

заменить одно на другое не?

Если бы всё было так просто, я бы вообще не парилась. В том то и дело, что работает неадекватно. **********, но как применить что-то пока не соображу.

Напомните какой у вас чат, я вечером зайду - пожмакаю да посмотрю

95
удалён @userka
Pegass пишет:

Напомните какой у вас чат, я вечером зайду - пожмакаю да посмотрю

**********

2615
Сергей @Pegass
Решено
function handleMouseLeave(handler) { return function(e) { e = e || event; var toElement = e.relatedTarget || e.toElement; while (toElement && toElement !== this) { toElement = toElement.parentNode; } if (toElement == this) { return; } return handler.call(this, e); }; }
/* [Функции - формирования никлиста] */
/* Определение частей никлиста */
set_privat="<a href=index.php?inc=info&userid="+userid+" onclick=\"wo(this.href,'Анкета','400','320','yes');return false;\" target="+us[i][0]+">"+set_privat+"</a>";
if(nick!=mynick) set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"document.getElementById("+userid+").style.display='block'; return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
else set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
set_icqst=icqst;
set_call="...";
set_ign="..."; // и т.д. остальные пункты меню

/* Добавление ячеек в таблицу */
tr.insertCell(0).innerHTML=set_privat;
tr.insertCell(1).innerHTML=set_nick+' '+set_love+'<div id='+userid+' style="display:none; position:absolute;">'+set_call+'<br>'+set_ign+'</div><br>'+set_icqst; tr.cells[1].width="100%";
document.getElementById(userid).onmouseout=parent.handleMouseLeave(function() { this.style.display='none'; });

95
удалён @userka
Pegass пишет:

Решено

Спасииибо! Ура. )))

110
Владимир @erorr
Помогите реализовать под чат . Буду Благодарен


Под кнопки топ100 , форум , гостевая , почта , настройки , магазин , админка , смайлы , галерея , викторина , кланы . оставить ниже по одному образцу в каждом подпункте .
**********

Отредактировано erorr - 15.11.2014
467
Lexa @Like
как правильно его использовать, ставил неработает
Pegass пишет:

Решено
function handleMouseLeave(handler) { return function(e) { e = e || event; var toElement = e.relatedTarget || e.toElement; while (toElement && toElement !== this) { toElement = toElement.parentNode; } if (toElement == this) { return; } return handler.call(this, e); }; }
/* [Функции - формирования никлиста] */
/* Определение частей никлиста */
set_privat="<a href=index.php?inc=info&userid="+userid+" onclick=\"wo(this.href,'Анкета','400','320','yes');return false;\" target="+us[i][0]+">"+set_privat+"</a>";
if(nick!=mynick) set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"document.getElementById("+userid+").style.display='block'; return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
else set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
set_icqst=icqst;
set_call="...";
set_ign="..."; // и т.д. остальные пункты меню

/* Добавление ячеек в таблицу */
tr.insertCell(0).innerHTML=set_privat;
tr.insertCell(1).innerHTML=set_nick+' '+set_love+'<div id='+userid+' style="display:none; position:absolute;">'+set_call+'<br>'+set_ign+'</div><br>'+set_icqst; tr.cells[1].width="100%";
document.getElementById(userid).onmouseout=parent.handleMouseLeave(function() { this.style.display='none'; });


110
Владимир @erorr
Alyoshka пишет:

как правильно его использовать, ставил неработает
Pegass пишет:

Решено
function handleMouseLeave(handler) { return function(e) { e = e || event; var toElement = e.relatedTarget || e.toElement; while (toElement && toElement !== this) { toElement = toElement.parentNode; } if (toElement == this) { return; } return handler.call(this, e); }; }

Первая Часть

/* [Функции - формирования никлиста] */

/* Определение частей никлиста */
set_privat="<a href=index.php?inc=info&userid="+userid+" onclick=\"wo(this.href,'Анкета','400','320','yes');return false;\" target="+us[i][0]+">"+set_privat+"</a>";
if(nick!=mynick) set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"document.getElementById("+userid+").style.display='block'; return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
else set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
set_icqst=icqst;
set_call="...";
set_ign="..."; // и т.д. остальные пункты меню
Вторая Часть

/* Добавление ячеек в таблицу */
tr.insertCell(0).innerHTML=set_privat;
tr.insertCell(1).innerHTML=set_nick+' '+set_love+'<div id='+userid+' style="display:none; position:absolute;">'+set_call+'<br>'+set_ign+'</div><br>'+set_icqst; tr.cells[1].width="100%";
document.getElementById(userid).onmouseout=parent.handleMouseLeave(function() { this.style.display='none'; });



467
Lexa @Like
Не получается(


function handleMouseLeave(handler) { return function(e) { e = e || event; var toElement = e.relatedTarget || e.toElement; while (toElement && toElement !== this) { toElement = toElement.parentNode; } if (toElement == this) { return; } return handler.call(this, e); }; }


/* [Функции - формирования никлиста] */

/* Функции добавления и удаления пользователей в массиве никлиста */
var uc = 0;
var us = new Array();
var ucc=new Array();
var index=0;
function separate(obj,c) {
if(ucc[obj+"c"]==null) ucc[obj+"c"]=c; else ucc[obj+"c"]+=c;
document.getElementById(obj+"c").innerHTML=ucc[obj+"c"];
if(c==1) return document.getElementById(obj).rowIndex+1;
}
function seprules(type,st,mw) {
if(!useseparate) return;
if(mw=='0') index=separate("man",type);
else if(mw=='1') index=separate("woman",type);
else if(mw=='') index=separate("noman",type);
}

function add(nick,colornick,st,mw,icon,status,inchat,time,room,love,clan,userid){
if(loaded==0) return;
var l=us.length;
for(var i = 0;i<l;i++ ) if(us[i]!=null && us[i][0]==nick) break;
us[i]=new Array(nick,colornick,st,mw,icon,status,room,love,clan,userid);
if (i==l) {uc++; update(room,1);}
if(room==myroom) {
nickid="!"+nick;
obj=document.getElementById(nickid);
var ul=document.getElementById('ul');
if(obj) ul.deleteRow(obj.rowIndex);
index=ul.rows.length;
seprules(1,st,mw);
var obj=ul.insertRow(index); obj.id=nickid;
format(i,obj);
}
}

function del(nick,colornick,st,mw,icon,status,inchat,time,room,userid) {
if(loaded==0) return;
for(var i=0; i<us.length; i++)
if( us[i] != null && us[i][0] == nick ) {uc--; update(us[i][6],-1); us[i] = null; break;}
if(room==myroom) {
nickid="!"+nick;
obj=document.getElementById(nickid);
var ul=document.getElementById('ul');
ul.deleteRow(obj.rowIndex);
seprules(-1,st,mw);
}
}


/* Добавление ника в таблицу участников */
function format(i,tr){
if(us[i]==null) return "";
nick=us[i][0];
color=us[i][1];
stat=us[i][2];
stat2=us[i][5];
mw_u=us[i][3];
icon=us[i][4];
love=us[i][7];
clan=us[i][8];
userid=us[i][9];

set_nick=setgn(11,nick);

set_privat=privat_s;
if(icon_on) {
if((icon=="")||(icon==0)) icon=icon1;
icon="<img src="+icon+" border=0>";
set_privat=icon;
}

if(stn[stat]==null) st=''; else st=stn[stat];
if(stn2[stat2]==null) icqst=''; else icqst=stn2[stat2];

/* Включение вебкамер */
if(webcam) {
if(stat2==98) icqst="<a href=# onclick='loadvideo(\"webcam"+nick+"\",webcamhost,\""+nick+"\",0); return false;'>"+icqst+"</a>";
if(stat2==99) icqst="<a href=# onclick='window.hidden.location.href=\"index.php?inc=write&"+yourkey+"&r="+Math.random()+"&text=/privat "+ nick +": privatcam\";return false;'>"+icqst+"</a>";
if(nick==mynick && loaded) {
if(stat2==98) loadvideo("mywebcam",webcamhost,nick,1);
else if(stat2==99) loadvideo("mywebcam",webcamhost,nick,1,privatcamkey);
else loadvideo("mywebcam","");
}
}

mw=mw_n;
if(mw_u=='0') mw=mw_m;
if(mw_u=='1') mw=mw_w;

set_love=""; if(love) set_love=" <a href=index.php?inc=info&nick="+love+" title='Обручен(а) с "+love+"' target=_blank>"+love1+"</a>";
set_clan=""; if(clan>0) set_clan=" <a href=index.php?inc=clan&clan="+clan+"&"+yourkey+" title='Находится в клане' target=_blank><img src=data/clan/"+clan+".gif border=0></a>";

/* Определение игнора */
ign_st="off";
ign_img=ign_imgoff;
if(ign_ok(us[i][0])) {ign_st="on"; ign_img=ign_imgon;}

/* Определение частей никлиста */
set_privat="<a href=index.php?inc=info&userid="+userid+" onclick=\"wo(this.href,'Анкета','400','320','yes');return false;\" target="+us[i][0]+">"+set_privat+"</a>";
if(nick!=mynick) set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"document.getElementById("+userid+").style.display='block'; return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
else set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
set_icqst=icqst;
set_call="...";
set_ign="..."; // и т.д. остальные пункты меню


/* Добавление ячеек в таблицу */
tr.insertCell(0).innerHTML=set_privat;
tr.insertCell(1).innerHTML=set_nick+' '+set_love+'<div id='+userid+' style="display:none; position:absolute;">'+set_call+'<br>'+set_ign+'</div><br>'+set_icqst; tr.cells[1].width="100%";
document.getElementById(userid).onmouseout=parent.handleMouseLeave(function() { this.style.display='none'; });

/* [Функция - вывода сообщений и команд] */

erorr пишет:

Alyoshka пишет:

как правильно его использовать, ставил неработает
Pegass пишет:

Решено
function handleMouseLeave(handler) { return function(e) { e = e || event; var toElement = e.relatedTarget || e.toElement; while (toElement && toElement !== this) { toElement = toElement.parentNode; } if (toElement == this) { return; } return handler.call(this, e); }; }


/* [Функции - формирования никлиста] */

/* Определение частей никлиста */
set_privat="<a href=index.php?inc=info&userid="+userid+" onclick=\"wo(this.href,'Анкета','400','320','yes');return false;\" target="+us[i][0]+">"+set_privat+"</a>";
if(nick!=mynick) set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"document.getElementById("+userid+").style.display='block'; return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
else set_nick="<a href='' onclick=\"tonick('"+nick+": '); return false;\" oncontextmenu=\"return false;\"><font size=3 color="+color+">"+set_nick+"</font></a>";
set_icqst=icqst;
set_call="...";
set_ign="..."; // и т.д. остальные пункты меню
Вторая Часть

/* Добавление ячеек в таблицу */
tr.insertCell(0).innerHTML=set_privat;
tr.insertCell(1).innerHTML=set_nick+' '+set_love+'<div id='+userid+' style="display:none; position:absolute;">'+set_call+'<br>'+set_ign+'</div><br>'+set_icqst; tr.cells[1].width="100%";
document.getElementById(userid).onmouseout=parent.handleMouseLeave(function() { this.style.display='none'; });




Отредактировано Like - 17.12.2014