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

Быстрая смена фона в чате

 

596
Сергей @Князь_Пипецкий
В теме https://vmeste.eu/forum?pid=168814#p168814 показан скрипт для установки фона в чате.

Выводятся в никлисте кнопки с мини-изображениями фонов.
Они должны быть кликабельными и применять установку фонового изображения, указанного в ссылке.
Почему-то эти кнопки совсем совсем не кликабельны 🙁

<script language="JavaScript" type="text/javascript">
function fon(nnn){
for(i=0; i<top.frames.length; i++) top.frames[i].document.body.style.backgroundImage="url("+nnn+")";
}// функция установки фона во всех фреймах
function nofon(nnn){
for(i=0; i<top.frames.length; i++) top.frames[i].document.body.style.backgroundImage="";
}// функция сброса фона
var wh=30; // ширина кнопки для установки фона
var ht=35; // её высота
var rjad = 5; // количество кнопок в одном ряду
var brr = 0;
var imgfon = new Array(); // ссылки на фоны любое количество желательно кратное количеству кнопок в ряду
imgfon[0]="Ссылка на картинку фона"
imgfon[1]="Ссылка на картинку фона"
imgfon[2]="Ссылка на картинку фона"
imgfon[3]="Ссылка на картинку фона"
imgfon[4]="Ссылка на картинку фона"
imgfon[5]="Ссылка на картинку фона"
imgfon[6]="Ссылка на картинку фона"
imgfon[7]="Ссылка на картинку фона"
imgfon[8]="Ссылка на картинку фона"
imgfon[9]="Ссылка на картинку фона"
document.write('<img alt="Обычный фон" border="1" hspace="2" vspace="2" width='+((wh*rjad)+(6*(rjad-1)))+' height='+ht/3+' onClick="nofon();" src='+imgfon[0]+' ><br />'); // длинная кнопка сброса фона
for (var i=0; i<imgfon.length; i++){document.write('<img alt="Нажмите чтобы установить этот фон" border="1" hspace="2" vspace="2" width='+wh+' height='+ht+' onClick="fon(this.src);" src='+imgfon[i]+' >');brr++;if (brr==rjad){document.write('<br />');brr=0}};// печать кнопок
// дополнительно ставить желанию
// случайный фон для тех кто незарегистрирован
vhod = Math.round(Math.random()*(imgfon.length-1));
if(parent.regist != 1) { window.setTimeout('fon(imgfon[vhod])',5000);}
// личный фон устанавливается админом индивидуально
var imgfonnik = new Array(); // ссылки для личных фонов любые
imgfonnik['ВАШ НИК']="Ссылка на личный фон"
imgfonnik['ЕЩЁ НИК']="Ссылка на личный фон"
if(imgfonnik[parent.mynick]!=null){document.write('<img alt="Ваш личный фон" border="1" hspace="2" vspace="2" width='+(wh+rjad)*rjad+' height='+ht/3+' onClick="fon(this.src);" src='+imgfonnik[parent.mynick]+' >');window.setTimeout('fon(imgfonnik[parent.mynick])',5000); } // печать личной кнопки и установка личного фона чата при входе
</script>

Подскажите - что исправить?

1007
BETEPAH @BETEPAH
Этот скрипт для фреймовых чатов. Для бесфреймовых надо так:
Вместо
function fon(nnn){
for(i=0; i<top.frames.length; i++) top.frames[i].document.body.style.backgroundImage="url("+nnn+")";
}// функция установки фона во всех фреймах
function nofon(nnn){
for(i=0; i<top.frames.length; i++) top.frames[i].document.body.style.backgroundImage="";
}// функция сброса фона

сделать
function fon(nnn){
document.body.style.backgroundImage="url("+nnn+")";
}// функция установки фона во всех фреймах
function nofon(nnn){
document.body.style.backgroundImage="";
}// функция сброса фона

596
Сергей @Князь_Пипецкий
Все работает! Спасибо огромное!

596
Сергей @Князь_Пипецкий
Для тех, кто захочет себе поставить это........

Лучше спрятать настройки фона в скрывающийся div
То, есть, по умолчанию настройки закрыты - нажимаешь кнопку - открываются.
В противном случае чат притормаживает.

Я у себя спрятал блок управления фонами в div с дополнительными настройками.

Примерно так:

<!------Дополнительные настройки------->
<div id=setting style="display:none;"><br>
<!----Личный фон------->
<div id=fons> <center>Установка фона<script language="JavaScript" type="text/javascript">
function fon(nnn){
document.body.style.backgroundImage="url("+nnn+")";
}// функция установки фона во всех фреймах
function nofon(nnn){
document.body.style.backgroundImage="";
}// функция сброса фона
var wh=30; // ширина кнопки для установки фона
var ht=35; // её высота
var rjad = 5; // количество кнопок в одном ряду
var brr = 0;
var imgfon = new Array(); // ссылки на фоны любое количество желательно кратное количеству кнопок в ряду
imgfon[0]="http://mpchat.ru/serhio64/fons/dvor-14.jpg"
imgfon[1]="http://mpchat.ru/serhio64/fons/dvor-16.jpg"
imgfon[2]="http://mpchat.ru/serhio64/img/fon/1.gif"
imgfon[3]="http://mpchat.ru/serhio64/fons/4.jpg"
imgfon[4]="http://mpchat.ru/serhio64/fons/dvor-17.gif"
imgfon[5]="http://mpchat.ru/serhio64/img/fon/6.gif"
imgfon[6]="http://mpchat.ru/serhio64/fons/dvor-12.jpg"
imgfon[7]="http://mpchat.ru/serhio64/fons/dvor-13.jpg"
imgfon[8]="http://mpchat.ru/serhio64/img/fon/8.gif"
imgfon[9]="/serhio64/fons/dvor-15.jpg"
imgfon[10]="http://mpchat.ru/serhio64/fons/dvor-18.jpg"
imgfon[11]="http://mpchat.ru/serhio64/fons/dvor-19.jpg"
imgfon[12]="http://mpchat.ru/serhio64/fons/dvor-20.jpg"
imgfon[13]="http://mpchat.ru/serhio64/fons/dvor-21.jpg"
imgfon[14]="http://mpchat.ru/serhio64/fons/dvor-22.jpg"
document.write('<img alt="Обычный фон" border="1" hspace="2" vspace="2" width='+((wh*rjad)+(6*(rjad-1)))+' height='+ht/3+' onClick="nofon();" src='+imgfon[0]+' ><br />'); // длинная кнопка сброса фона
for (var i=0; i<imgfon.length; i++){document.write('<img alt="Нажмите чтобы установить этот фон" border="1" hspace="2" vspace="2" width='+wh+' height='+ht+' onClick="fon(this.src);" src='+imgfon[i]+' >');brr++;if (brr==rjad){document.write('<br />');brr=0}};// печать кнопок
// дополнительно ставить желанию
// случайный фон для тех кто незарегистрирован
vhod = Math.round(Math.random()*(imgfon.length-1));
if(parent.regist != 1) { window.setTimeout('fon(imgfon[vhod])',5000);}
// личный фон устанавливается админом индивидуально
var imgfonnik = new Array(); // ссылки для личных фонов любые
imgfonnik['Князь_Пипецкий']="http://mpchat.ru/serhio64/img/fon/1.gif"
imgfonnik['Эстерсита']="http://mpchat.ru/serhio64/img/fon/13.jpg"
if(imgfonnik[parent.mynick]!=null){document.write('<img alt="Ваш личный фон" border="1" hspace="2" vspace="2" width='+(wh+rjad)*rjad+' height='+ht/3+' onClick="fon(this.src);" src='+imgfonnik[parent.mynick]+' >');window.setTimeout('fon(imgfonnik[parent.mynick])',5000); } // печать личной кнопки и установка личного фона чата при входе
</script></center></div>
<!------конец фона------------->
</center></div>
<a href=# title="Показать настройки/Скрыть настройки" onclick="obj=document.getElementById('setting'); if(obj.style.display=='none') obj.style.display='block'; else obj.style.display='none'; return false;"><center><img src=/serhio64/img/ds-1.png title="Открыть/закрыть панель долнительных настроек"/></center></a>
<!--------конец настроек------------>

596
Сергей @Князь_Пипецкий
Возник попутный вопросец по данной теме.
Фон применяется ко всем документам в чате - окно сообщений, никлист, приват......
Но...... у меня есть панель любимых смайлов...... в неё фон не ставится 🙁

Как бы дописать недостающее к скрипту?

В стилях любимые смайлы вот:

/* стиль любимых смайлов */
.smilediv { display:none }
#smilediv
{
display:none;
position: absolute;
width: 110px;
left: 0;
bottom: 70px;
top: 0;
z-index: 1;
border: 0;
}

#smilediv iframe
{
outline: none;
margin: 0;
padding: 0;
border: 0;
width:100%;
height:100%;
}

div > .delete {
color: #CCCCCC;
cursor: pointer;
display: block;
float: right;
font: 14px Verdana;
height: 6px;
margin: -3px 5px;
text-decoration: none;
visibility: hidden;
}
div > .delete span {
color: #AAAAAA;
font: bold 14px "Arial Black";
}
div > .delete:hover {
color: #666666;
font: 14px Verdana;
text-decoration: none;
}
div > .delete:hover span {
color: #666666;
font: bold 14px "Arial Black";
text-decoration: none;
}
div:hover > .delete {
display: block;
visibility: visible;
}

Попробовал вставить в стиль это
backgroundImage="url("+nnn+")";

...но увы 🙁

Отредактировано Князь_Пипецкий - 11.02.2013
424
ishkiniaev @ishkiniaev
Кому не сложно, помогите поставить этот скрипт.
Ставлю все как сказали выше, но не работает.

Отредактировано ishkiniaev - 21.12.2013
83
VipeR707 @VipeR707
Поставил в юзер лист.....меняется фон только там( как сделать что бы изменялся фон чата?

83
VipeR707 @VipeR707
Князь_Пипецкий пишет:

Для тех, кто захочет себе поставить это........

Лучше спрятать настройки фона в скрывающийся div
То, есть, по умолчанию настройки закрыты - нажимаешь кнопку - открываются.
В противном случае чат притормаживает.

Я у себя спрятал блок управления фонами в div с дополнительными настройками.

Примерно так:

<!------Дополнительные настройки------->
<div id=setting style="display:none;"><br>
<!----Личный фон------->
<div id=fons> <center>Установка фона<script language="JavaScript" type="text/javascript">
function fon(nnn){
document.body.style.backgroundImage="url("+nnn+")";
}// функция установки фона во всех фреймах
function nofon(nnn){
document.body.style.backgroundImage="";
}// функция сброса фона
var wh=30; // ширина кнопки для установки фона
var ht=35; // её высота
var rjad = 5; // количество кнопок в одном ряду
var brr = 0;
var imgfon = new Array(); // ссылки на фоны любое количество желательно кратное количеству кнопок в ряду
imgfon[0]="http://mpchat.ru/serhio64/fons/dvor-14.jpg"
imgfon[1]="http://mpchat.ru/serhio64/fons/dvor-16.jpg"
imgfon[2]="http://mpchat.ru/serhio64/img/fon/1.gif"
imgfon[3]="http://mpchat.ru/serhio64/fons/4.jpg"
imgfon[4]="http://mpchat.ru/serhio64/fons/dvor-17.gif"
imgfon[5]="http://mpchat.ru/serhio64/img/fon/6.gif"
imgfon[6]="http://mpchat.ru/serhio64/fons/dvor-12.jpg"
imgfon[7]="http://mpchat.ru/serhio64/fons/dvor-13.jpg"
imgfon[8]="http://mpchat.ru/serhio64/img/fon/8.gif"
imgfon[9]="/serhio64/fons/dvor-15.jpg"
imgfon[10]="http://mpchat.ru/serhio64/fons/dvor-18.jpg"
imgfon[11]="http://mpchat.ru/serhio64/fons/dvor-19.jpg"
imgfon[12]="http://mpchat.ru/serhio64/fons/dvor-20.jpg"
imgfon[13]="http://mpchat.ru/serhio64/fons/dvor-21.jpg"
imgfon[14]="http://mpchat.ru/serhio64/fons/dvor-22.jpg"
document.write('<img alt="Обычный фон" border="1" hspace="2" vspace="2" width='+((wh*rjad)+(6*(rjad-1)))+' height='+ht/3+' onClick="nofon();" src='+imgfon[0]+' ><br />'); // длинная кнопка сброса фона
for (var i=0; i<imgfon.length; i++){document.write('<img alt="Нажмите чтобы установить этот фон" border="1" hspace="2" vspace="2" width='+wh+' height='+ht+' onClick="fon(this.src);" src='+imgfon[i]+' >');brr++;if (brr==rjad){document.write('<br />');brr=0}};// печать кнопок
// дополнительно ставить желанию
// случайный фон для тех кто незарегистрирован
vhod = Math.round(Math.random()*(imgfon.length-1));
if(parent.regist != 1) { window.setTimeout('fon(imgfon[vhod])',5000);}
// личный фон устанавливается админом индивидуально
var imgfonnik = new Array(); // ссылки для личных фонов любые
imgfonnik['Князь_Пипецкий']="http://mpchat.ru/serhio64/img/fon/1.gif"
imgfonnik['Эстерсита']="http://mpchat.ru/serhio64/img/fon/13.jpg"
if(imgfonnik[parent.mynick]!=null){document.write('<img alt="Ваш личный фон" border="1" hspace="2" vspace="2" width='+(wh+rjad)*rjad+' height='+ht/3+' onClick="fon(this.src);" src='+imgfonnik[parent.mynick]+' >');window.setTimeout('fon(imgfonnik[parent.mynick])',5000); } // печать личной кнопки и установка личного фона чата при входе
</script></center></div>
<!------конец фона------------->
</center></div>
<a href=# title="Показать настройки/Скрыть настройки" onclick="obj=document.getElementById('setting'); if(obj.style.display=='none') obj.style.display='block'; else obj.style.display='none'; return false;"><center><img src=/serhio64/img/ds-1.png title="Открыть/закрыть панель долнительных настроек"/></center></a>
<!--------конец настроек------------>


НЕ работает(

424
ishkiniaev @ishkiniaev
у меня вообще не меняется нигде)

2615
Сергей @Pegass
скрипт рабочий выполняет ровно то, что что от него требуется - меняет фон у BODY

1163
Денис @Анатолич
уже Ответил в факе, но модераторы очень оперативно стерли.
пропишите фон не для Боди.
Показать текст


а для Дивов
Показать текст

Отредактировано Анатолич - 22.12.2013
1007
BETEPAH @BETEPAH
Анатолич пишет:

function nofon(nnn){
document.getElementById("bottomdiv").style.backgroundImage="url("+nnn+")";
}// функция сброса фона[/spoiler]

странная какая-то функция сброса фона. А в чем отличие от функции установки?
Замените тогда уж обе функции на одну:
function fon(nnn){// функция установки и сброса фона во всех фреймах
var image = nnn ? 'url('+nnn+')' : 'none';
document.getElementById("bottomdiv").style.backgroundImage = image;
document.getElementById("usersdiv").style.backgroundImage = image;
document.getElementById("privatdiv").style.backgroundImage = image;
document.getElementById("leftdiv").style.backgroundImage = image;
document.getElementById("topdiv").style.backgroundImage = image;
}

Отредактировано BETEPAH - 22.12.2013
1163
Денис @Анатолич
BETEPAH, ваша правда, мой косяк. я и не заметил, Но собственно он не такой критичный, работает он исправно. Потому и не заметил, что код не оптимизирован.