Вы не зашли.

#181 

Ванька.RU
Знаток
Имя: Иоанн
Откуда: Россия, Ковдор
Зарегистрирован: 2009-05-25
Сообщений: 1390
На форуме: 517 час.
Репутация: 251 (97%) ±
Инфо  Вебсайт  Написать

Простое и прозрачное окно для безфреймовой версии. Будем рассматривать версию под смайлы.
Как только мы нажимаем на кнопку, открывается окно со смайлами. Мы выбираем смайл и окно закрывается, при этом он вписывается в строку сообщения.

Для начала в ваш style.css напишем новые стили и назовём это к примеру fastsmile:

#fastsmile {
  position: absolute;
  right: 412px;
  top: 125px;
  border:solid #A8A8A8 1px;
  z-index: 10;
  width:200px;
  height: 100px;
  overflow: hidden;
  background-color:#FFFFFF;
  color:#000000;
  text-align:center;
  padding:0px;
}

Зелёным задаётся позиция, а именно 412 пикселей сдвиг с правой стороны на лево, сдвиг на 125 сверху вниз.
Фиолетовым задаются размеры окна то есть: 200 пикселей по ширине и 100 по высоте.
Остальные значения не буду описывать, думаю не составит труда разобраться вам самим.

Далее вставляем в документ Чат внутри этот код:

<div id="fastsmile" style='filter:alpha(opacity=70); -moz-opacity: 0.7; -khtml-opacity: 0.7; opacity: 0.7;'>
<a href=# onclick="parent.sendto(' *код смайла '); document.getElementById('fastsmile').style.display='none'; return false;"><img src=ссылка на смайл border=0></a>
<a href=# onclick="parent.sendto(' *код смайла '); document.getElementById('fastsmile').style.display='none'; return false;"><img src=ссылка на смайл border=0></a>
<table align=right><tr><td><button type="ok" style="border: 0px #B2B2B2 solid; background-color: #ffffff; font-size: 11px; font-family:Arial;" value="закрыть" onclick="document.getElementById('fastsmile').style.display='none'; return false;">закрыть окно</button></td></tr></table>
</div>

style='filter:alpha(opacity=70); -moz-opacity: 0.7; -khtml-opacity: 0.7; opacity: 0.7;' Управляет прозрачностью блока. Вы можете поменять значение или просто убрать стиль.
document.getElementById('fastsmile').style.display='none'; Функция закрывающая блок. Можете убрать её, если хотите что-бы после нажатия на смайл окно не закрывалось.

И наконец ставим саму кнопку в любое удобное для вас место:

<a href="#" onclick="document.getElementById('fastsmile').style.display='block'; return false;" title="Всплывающее окно">Быстрые смайлы</a>

Вот и всё smile

Отредактированно Ванька.RU (2011-06-22 00:12:29)

Неактивен

#182 

Rafer
Пользователь
Имя: Веталь
Откуда: Украина, Одесса
Зарегистрирован: 2011-11-14
Сообщений: 215
На форуме: 61 час.
Репутация: 6 (58%) ±
Инфо  Написать

Скрипт работает через  функ. title="текс"
Можно вставлять "Чат внутри" в самый конец функ.
Моно настраивать цвета текста, фона, обводки.

Себе ставил, работает.

Отредактированно Rafer (2011-11-14 22:58:31)

Неактивен

#183 

TheDark
Знаток
Зарегистрирован: 2010-08-01
Сообщений: 1545
На форуме: 527 час.
Репутация: 110 (88%) ±
Инфо  Написать

«Динамичный» блок новостей

Для начала создадим на всех нужных страницах сайта блок id="news" со следующим содержимым:

Далее в корень сайта заливаем файл news.js следующего содержания:

Естественно, вместо # ставим ссылку на саму новость.

Таким образом, если установить блок с новостями на несколько страниц сайта, то его содержимое не нужно будет менять на каждой странице. Достаточно лишь изменить один js файл - и на всех страницах, где установлен этот блок изменится его содержание.

Также, так как каждая новость имеет свою переменную (newsOne, к примеру) ее, если нужно, можно отобразить в любом другом месте сайта:

Все, что осталось сделать - оформить с помощью CSS блок новостей и все готово. Тут уж дело вашей фантазии.

К ссылкам, кстати, рекомендую использовать параметр display: block;. В противном случае, в файл скрипта добавьте тег <br> после каждой ссылки, чтобы перенести ее на другую строку.

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

Отредактированно DarkLive (2012-03-30 19:02:17)

Неактивен

#184 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Задумался о возможности проверки активна ли вкладка с чатом в настоящий момент.
1) Может пригодиться, например, для: выдачи звуковых уведомлений о сообщениях только при неактивной вкладке, как это реализовано в мессенджерах (Skype, ICQ, etc.). Вот такой вот скрипт есть:

Соответственно, при вставке звука в сообщение проверяем булеву переменную isActive -

2) Еще один вариант использования - останавливать прокрутку при потере фокуса. Отвлёкся человек от чата, остановилась прокрутка, вернулся в окно чата и продолжил читать переписку с места остановки. Правда, с первым же сообщением после возвращения лог прокрутится вниз, но будет визуально видно, как много за это время наговорили. Ну и эффект должен понравиться чатланам wink В общем, как-то так примерно:

Или при потере фокуса ставить в лог какой-то разделитель, как это реализовано, например, в чате "переполнения буфера" wink
Что-то вроде

var divider = '----------&darr;';
function onBlur() { // окно с чатом теряет фокус
    while (document.getElementById('divider')) document.getElementById('leftdiv').removeChild(document.getElementById('divider'));
    wr(divider);
};
if (/*@cc_on!@*/false) { // для Internet Explorer
    document.onfocusout = onBlur;
} else {
    window.onblur = onBlur;
}
// в функцию wr(text) добавить синее
...
var div=document.createElement('div'); div.innerHTML= text;
if (text == divider) div.id = 'divider';
leftdiv.appendChild(div);

3) Для использующих скрипт сколько фраз написано вам пока вы молчали можно сделать сброс счетчика при получении окном фокуса:

P.S. само собой содержимое функций onBlur и onFocus может содержать все из перечисленных действий одновременно.

Отредактированно BETEPAH (2012-09-30 23:47:21)


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#185 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Функция для склонения существительных по падежам. В зависимости от числа-значения вернет вместе с числом считаемое существительное в нужном падеже.
Для того, чтоб страницы не выглядели безграмотными с выражениями "Сегодня чату 21 дня" или "Сейчас в чате 11 человека".

Пример использования:

wr( 'Всего на форуме ' + plural(alltopics, 'тема','темы','тем') + ' и ' + plural(allposts, 'ответ','ответа','ответов') + '.');

wr('В чате сейчас ' + plural(i_inchat, 'человек', 'человека', 'человек') + '<br />Всего зарегистрировано ' + plural(i_users, 'человек', 'человека', 'человек'));

wr('Сегодня чату ' + plural(days, 'день', 'дня', 'дней'));

и т.д. мест применения в чате очень много.


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#186 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Если кому-то, как и мне, понадобится скролинг окна сообщений и списка пользователей внутри чата на тач-интерфейсах, добавляем в head:

а в onload:

P.S. взято отсюда, в комментариях есть доработанные скрипты для скролинга по двум направлениям и плагины для jQuery

Отредактированно BETEPAH (2012-11-12 14:08:52)


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#187 

erorr
Пользователь
Зарегистрирован: 2012-03-03
Сообщений: 110
На форуме: 122 час.
Репутация: 3 (100%) ±
Инфо  Написать

Игра `Крестики нолики` на бесконечном поле на JS

Всем известная игра в крестики нолики smile
Цель игры - построить непрерывный ряд из 5 крестиков по горизонтали, вертикали или диагонали.


Javascript

<script type="text/javascript">
var TOTLIN, ATFAC, PLAYER, OPPON, IGROK, PROGR, WINLINE, GAMEEND;
var IGT, X, Y, LX, LY, OTMENA=false;
var BOARD, VALUE, LINP, WEIGHT = new Array(0, 0, 4, 20, 100, 500, 0);
function sgn(T) {
   if (T<0) T=-1;
   else if (T>0) T=1;
   else T=0;
   return T;
  }
function INICIAL() {
   var I, J, tr;
   var f = '<table id="f" style="border: none; border-collapse:collapse;">';
   BOARD = new Array();
   VALUE = new Array();
   LINP = new Array();
   for (I=0;I<=20;I++) {
     if (I>0 && I<20) tr='<tr>';
     BOARD[i] = new Array();
     VALUE[i] = new Array();
     LINP[i] = new Array();
     for (J=0; J<=20; J++) {
       if (I*J>0 && I<20 && J<20) tr += '<td id="c-'+I+'-'+J+'" onclick="ANAKEY(this);" style="font-family: Tahoma, Helvetica, Sans Serif; border: 1px dotted #00a; cursor: pointer; width: 20px; font-weight: bold; text-align: center; vertical-align: middle; font-size: 16px; line-height: 20px">&nbsp;</td>';
       VALUE[i][J] = new Array();
       LINP[i][J] = new Array();
       for(C=1;C<3;C++) { LINP[i][J][C] = new Array(); }
      }
     if (I>0 && I<20) { tr += '</tr>'; f += tr; }
    }
   f += '</table>';
   document.write(f);
   PROGR=0;
   IGROK=0;
  }
function ANAKEY(a) {
   X = a.id.replace(/c-/,'').replace(/-.*/,'');
   Y = a.id.replace(/c-/,'').replace(/.*-/,'');
   if (BOARD[X][Y] == 0) {
     BOARD[X][Y]=1; MOVEXOD();
     if (GAMEEND) {
       IGROK += 1;
       MESSAG('Поздравляем! Вы выиграли!');
      }
     else {PRGMAK();}
    }
  }
function NEWGAME() {
   var I, J, C, D;
   if (OTMENA) {
     alert('Игра не закончена!');
     return false;
    }
   for(I=1;I<=19;I++)
     for(J=1;J<=19;J++) {
       geid('c-'+I+'-'+J).innerHTML='&nbsp;';
       geid('c-'+I+'-'+J).className='';
       BOARD[i][J]=0;
       for(C=1;C<3;C++) {
         VALUE[i][J][C] = 0;
         for(D=0;D<4;D++) LINP[i][J][C][D] = 0;
        }
      }
     geid('txt').innerHTML='Ваш ход';
     geid('prg').innerHTML=PROGR;
     geid('igr').innerHTML=IGROK;
     PLAYER=1;
     OTMENA=true;
     TOTLIN=(19*(19-4)+(19-4)*(19-4))*4; LX=1; LY=1;
     X=10;
     Y=X;
     ATFAC=parseInt(IGROK/2);
     if (ATFAC >15) ATFAC=15;
     for(I=1;I<20;I++)
       for(J=1;J<20;J++) {
         IGT = BOARD[i][J];
         DRAMOV(I,J);
        }
  }
function DRAMOV(XX, YY) {
   var idt;
   LX=XX;
   LY=YY;
   idt='c-'+XX+'-'+YY;
   if (IGT == 1) {
     geid(idt).innerHTML='x';
    }
   else if (IGT == 2) {
     geid(idt).className='red';
     geid(idt).innerHTML='o';
    }
  }
function MOVEXOD() {
   var T, K, L, X1, Y1, X11, Y11, DX, DY, NUM, LIO, LIP, TTT, idt;
   WINLINE = 0;
   OPPON = 3 - PLAYER;
   GAMEEND = false;
   idt='c-'+LX+'-'+LY; geid(idt).className='';
   for (T=0;T<4;T++)
     for(K=0;K<5;K++) {
       X1 = parseInt(X) + sgn(T - 2) * K;
       Y1 = Y - sgn(T) * K;
       switch(T) {
          case 0: TTT = X1 > 0 && X1 < 16; break;
          case 1: TTT = (X1 > 0 && X1 < 16) && (Y1 > 0 & Y1 < 16); break;
          case 2: TTT = Y1 > 0 && Y1 < 16; break;
          case 3: TTT = (X1 > 4 && X1 < 20) && (Y1 > 0 && Y1 < 16); break;
          default:;
         }
       if(TTT) {
         NUM = LINP[X1][Y1][PLAYER][T];
         NUM = NUM + 1;
         if (NUM == 1) TOTLIN--;
         else if (NUM == 5) GAMEEND = true;
         LINP[X1][Y1][PLAYER][T] = NUM;
         if (GAMEEND && (WINLINE == 0)) WINLINE = T + 1;
         LIP = LINP[X1][Y1][PLAYER][T];
         LIO = LINP[X1][Y1][OPPON][T];
         for(L=0;L<5;L++) {
           X11 = X1 - sgn(T - 2) * L;
           Y11 = parseInt(Y1) + sgn(T) * L;
           if (LIO == 0) VALUE[X11][Y11][PLAYER]=VALUE[X11][Y11][PLAYER] + WEIGHT[LIP + 1] - WEIGHT[LIP];
           else
             if (LIP == 1) VALUE[X11][Y11][OPPON] = VALUE[X11][Y11][OPPON] - WEIGHT[LIO + 1];
          }
        }
      }
   BOARD[X][Y] = PLAYER;
   IGT = PLAYER;
   if (GAMEEND) {
      switch(WINLINE) {
         case 1: DX = 1; DY = 0; break; case 2: DX = 1; DY = 1; break;
         case 3: DX = 0; DY = 1; break; case 4: DX = -1; DY = 1; break;
         default:;
        }
      do {
          X = (X - 0 + DX);
          Y = (Y - 0 + DY);
          }
      while (BOARD[X][Y] == PLAYER);
      X -= DX;
      Y -= DY;
      for(I=1;I<6;I++) {
        idt='c-'+X+'-'+Y; geid(idt).className='green';
        DRAMOV (X, Y); X = X - DX; Y = Y - DY;
       }
    }
   else {
     DRAMOV (X, Y);
     PLAYER = OPPON;
    }
  }
function PRGMAK() {
   var I, J, MAX, VALZ;
   if (TOTLIN <= 0) { GAMEEND = true; MESSAG('Tie game!'); }
   else {
     OPPON = 3 - PLAYER;
     MAX = -32767;
     X = 10;
     Y = 10;
     if (BOARD[X][Y] == 0) MAX = 4;
     for(I=1;I<20;I++)
       for(J=1;J<20;J++) {
         if (BOARD[i][J]==0) {
           VALZ=parseInt(VALUE[i][J][PLAYER]*(16+ATFAC)/16)+VALUE[i][J][OPPON]+parseInt(Math.random()*4);
           if (VALZ>MAX) {
             X = I; Y = J;
             MAX = VALZ;
            }
          }
        }
       MOVEXOD();
       if (GAMEEND) {
         PROGR++; MESSAG('Компьютер победил!');
        }
    }
  }
function MESSAG(SS) { alert(SS); OTMENA=false; NEWGAME(); }
function geid(i) { return document.getElementById(i); }
</script>

Неактивен

#188 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Стильный jquery-плагин "лайкальных" кнопок. По ссылке конструктор для формирования готового кода на сайт.
http://imgs.su/users/46646/1359025123.png


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#189 

BETEPAH
Знаток
Имя: Евгений
Откуда: Украина, Киев
Зарегистрирован: 2010-06-25
Сообщений: 1007
На форуме: 204 час.
Репутация: 238 (100%) ±
Инфо  Написать

Вчера вышел свежий релиз файрфокса, и пришло время обратить внимание на HTML 5 Notifications API.
Думаю, этот способ уведомлений должен понравиться. Можно выводить сообщения в небольшом окошке возле трея, они будут видны даже при свернутом браузере.
Попробовать можно здесь: http://delch.github.io/notifications-api/
Поддержка:
- Safari 6
- Chrome 27
- Firefox 22

Отредактированно BETEPAH (2013-06-26 11:47:16)


Безграмотные вопросы в игноре.
Вопросы в личке приравниваются к индивидуальной платной консультации.

Неактивен

#190 

Foggy
памагу за 50€, помогу за 5
Имя: Андрей
Откуда: Петербург
Зарегистрирован: 2008-04-21
Сообщений: 2970
На форуме: 446 час.
Репутация: 296 (97%) ±
Инфо  Вебсайт  Написать

BETEPAH, отличная идея) я как-то упустил их обновление) будем пробовать)

Скрипт смена фона плавной радугой, как хочет любой клиент! Не хватает только единорогов...
скрипт ещё 2011 года, но я только сегодня встретил)
http://javascript.ru/blog/poorking/inte … shu-canvas


Форум чище без подписей в настройках. Рекомендую.
Я искал, но не нашёл.
Помощь — платная. Избранным помогаю за идею. Избранный тот, кто придумал идею, а не скопипастил.

Неактивен

#191 

Dimitry
Ниндзя по зачистке капусты
Имя: Дмитрий
Откуда: Германия
Зарегистрирован: 2003-04-18
Сообщений: 18829
На форуме: 1819 час.
Репутация: 1244 (99%) ±
Инфо  Вебсайт  Написать

Сообщение от Foggy:

BETEPAH, отличная идея) я как-то упустил их обновление) будем пробовать)

Скрипт смена фона плавной радугой, как хочет любой клиент! Не хватает только единорогов...
скрипт ещё 2011 года, но я только сегодня встретил)
http://javascript.ru/blog/poorking/inte … shu-canvas

кушает до 20% CPU


Моя анкета на vmeste.eu
Если сообщение Вам помогло, отблагодарите участника повысив его репутацию!
PS. То, что нас не убивает, то делает нас сильнее!

Неактивен

#192 

iamlo
Ученик
Зарегистрирован: 2018-06-25
Сообщений: 55
На форуме: 23 час.
Репутация: 0 (50%) ±
Инфо  Вебсайт  Написать

Привет всем.
Может кто подкинуть более менее хороший скрипт вывод и смены случайных фраз?
Т.е. просто рандомный вывод фразы после перезагрузки и их смена через каждые 5-10 сек.
Гуглил, все как-то объемно и не вызывает доверия.

Неактивен

#193 

mychatik
Moderator
Имя: Геннадий
Зарегистрирован: 2016-04-24
Сообщений: 260
На форуме: 66 час.
Репутация: 21 (96%) ±
Инфо  Вебсайт  Написать

Сообщение от iamlo:

просто рандомный вывод фразы после перезагрузки и их смена через каждые 5-10 сек.

5000 миллисекунд = 5 секунд (время обновления фраз)

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

Отредактированно mychatik (2018-07-17 03:28:15)

Неактивен

#194 

iamlo
Ученик
Зарегистрирован: 2018-06-25
Сообщений: 55
На форуме: 23 час.
Репутация: 0 (50%) ±
Инфо  Вебсайт  Написать

Сообщение от mychatik:

Сообщение от iamlo:

просто рандомный вывод фразы после перезагрузки и их смена через каждые 5-10 сек.

5000 миллисекунд = 5 секунд (время обновления фраз)

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

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

Неактивен

#195 

Trilby
miss me?
Имя: Алексей
Откуда: Default City
Зарегистрирован: 2006-08-01
Сообщений: 8483
На форуме: 799 час.
Репутация: 766 (94%) ±
Инфо  Вебсайт  Написать

В самый конец Body (или сразу после него) вставляем

А в нужное место вставляем блок     

Отредактированно Trilby (2018-07-17 11:19:16)

Неактивен

[ Generated in 0.014 seconds, 8 queries]