refresh cnucok 7bit.forum нacлeдuть
  РегистрацияПользователиАдминистраторы и модераторыПоискЧасто задаваемые вопросы На главную

7bit.forum » Техника » Обмен опытом » Ostopizyevshiy JavaScript » Привет, незнакомец [войти|регистрация]
Распечатать страницу
Понравилась тема? Поделитесь с друзьями!
Автор
Сообщение « Предыдущая тема | Следующая тема »
Imm
Imm - мужик
Легендарный студент ИТМО




Группа: VIP-Пользователи

Дата регистрации: 22.12.2003
Сообщения: 2030
Кто?: Студент СПбГУ (физфак)

Репутация пользователя :
+877 -379 = 498
Рейтинг сообщения:
+0 -0 = 0
балл   балл


Question Ostopizyevshiy JavaScript На верх страницы

Необходимы следующие вещи:
1) Как в JS отслеживать нажатие клавиш?
В чате будет два варианта текст-поля. input=text и textarea. Для текстарии думается нужно сделать такую же хрень как и в аське. Отправка сообщения по Ctrl+Enter. Конечно можно использовать последовательные нажатия Tab, а потом Enter, но это кривовато. То, что можно отследить нажатие контрола в этом я уверен, а вот как не догадываюсь. Хотя этот вопрос не очень важен.
2) Давайте вместе подумаем, как грамотнее всего избавиться от возможной горизонтальной прокрутки в чате? Все наверно знают об этом. Напишет какой-нибудь герой максимум одинаковых символов и радуйтесь. Все длинные сообщения теперь в одну строку. Т.к. в этом чате все новые сообщения загружаются в массиве JS, то возможны два варианта. Исправлять длинные строки средствами php или JS.
3) На это по идее можно не отвечать, сам разберусь. Но если кто ответит, то время сэкономлю. Как грамотно управлять скороллом элементов? Если я не ошибаюсь, там есть маленькие проблемки с кроссбраузерностью.

Пока всё. Если чего ещё вспомню, напишу.

__________________
Серьёзное лицо это ещё не признак ума, все глупости на Земле совершаются именно с этим выражением лица... Улыбайтесь, господа, улыбайтесь! ...
(из к/ф "Тот самый Мюнхгаузен". сценарий Г. Горина)

28.10.2005 06:24 Imm оффлайн Послать письмо Imm Искать сообщения : Imm Добавить Imm в адресную книгу
Юрик
Юрик - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 21.06.2004
Сообщения: 3340
Кто?: Выпускник

Репутация пользователя :
+3212 -428 = 2784
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
2) Давайте вместе подумаем, как грамотнее всего избавиться от возможной горизонтальной прокрутки в чате? Все наверно знают об этом. Напишет какой-нибудь герой максимум одинаковых символов и радуйтесь. Все длинные сообщения теперь в одну строку


в гостевой реализован следующий вариант

function my_wordwrap($str, $lim, $sep)
{
$arr = preg_split("/([[:space:]])+/",$str,-1,PREG_SPLIT_DELIM_CAPTURE);
foreach ($arr as $k=>$v) {@$res .= (strlen($v)>$lim ? wordwrap($v, $lim, $sep, 1) : $v);}
return $res;
}


Пареметры функции:
$str - строка для проверки на наличие длинных слов
$lim - максимально-допустимый размер слова
$sep - разделитель, используемый при разбиении длинных слов

принцип работы функции:
если в тексте встречается слово(комбинация букв без пробелов), длиннее, чем $lim, оно разбивается на участки по $lim c разделителем между ними $sep (последний участок разбиения может быть длиной меньше $lim, если длина слова не кратна $lim)

Пример:
$message = "Книга рекордов Гиннеса, Черезтридцатьтризабораногузадерищенскийофтгеннодлиннаяфамилия, это произвело фурор";
$res = my_wordwrap($message, 25, "-\n")
echo $res;

Результат:
Книга рекордов Гиннеса, Черезтридцатьтризабораног-
узадерищенскийофтгеннодли-
ннаяфамилия, это произвело фурор

__________________
Xριστος ανεστη εκ νεκρων
Θανατω θανατον πατησας.
Και τοις εν τοις μνημασι
Ζωην χαρισαμενος.

28.10.2005 11:46 Юрик оффлайн Искать сообщения : Юрик Добавить Юрик в адресную книгу
Юрик
Юрик - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 21.06.2004
Сообщения: 3340
Кто?: Выпускник

Репутация пользователя :
+3212 -428 = 2784
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
3) На это по идее можно не отвечать, сам разберусь. Но если кто ответит, то время сэкономлю. Как грамотно управлять скороллом элементов? Если я не ошибаюсь, там есть маленькие проблемки с кроссбраузерностью.


Прокрутка в область видимости:
if ((cl.scrollIntoView)? true:false == true) cl.scrollIntoView(false);
где cl - ссылка на элемент, полученная, например, при момощи document.getElementById()

работает не во всех браузерах.

В предыдущей версии чата это дело вызывалось сразу после добавления сообщения

__________________
Xριστος ανεστη εκ νεκρων
Θανατω θανατον πατησας.
Και τοις εν τοις μνημασι
Ζωην χαρισαμενος.

28.10.2005 12:04 Юрик оффлайн Искать сообщения : Юрик Добавить Юрик в адресную книгу
Stan F
Stan F - мужик
Его Величество Администратор


Группа: Администраторы

Дата регистрации: 14.11.2003
Сообщения: 5148
Кто?: ФЮРЕР

Репутация пользователя :
+1897 -840 = 1057
Рейтинг сообщения:
+0 -0 = 0
балл   балл


На верх страницы

ммм.. а [[:space:]] - это случаем не из POSIX?
PCRE использует \s - если я не ошибаюсь.

__________________

Последний рассвет
Тонкая нить и
Холодная сталь
Поможет забыть мне
Сотрёт глубину
Исчезнет печаль
Прольётся внутри
Моя мёртвая кровь
Развеет твой крик

28.10.2005 12:06 Stan F оффлайн Сайт Stan F Искать сообщения : Stan F Добавить Stan F в адресную книгу
Юрик
Юрик - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 21.06.2004
Сообщения: 3340
Кто?: Выпускник

Репутация пользователя :
+3212 -428 = 2784
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
Stan F пишет
ммм.. а [[:space:]] - это случаем не из POSIX?
PCRE использует \s - если я не ошибаюсь.

тоже вариант :)

__________________
Xριστος ανεστη εκ νεκρων
Θανατω θανατον πατησας.
Και τοις εν τοις μνημασι
Ζωην χαρισαμενος.

28.10.2005 12:08 Юрик оффлайн Искать сообщения : Юрик Добавить Юрик в адресную книгу
Юрик
Юрик - мужик
Его Величество Администратор




Группа: Администраторы

Дата регистрации: 21.06.2004
Сообщения: 3340
Кто?: Выпускник

Репутация пользователя :
+3212 -428 = 2784
Рейтинг сообщения:
+0 -0 = 0
балл   балл

МОИ ФОТКИ!


На верх страницы

цитата:
Как в JS отслеживать нажатие клавиш?

if (document.forms.mess.elements.message.focus)
document.forms.mess.elements.message.focus();
// это было наведение фокуса на элемент, куда вводится текст. Этот код можно убрать

function ctrlenter(k)
{
if (k)
{
ctrl=k.ctrlKey;
k=k.which;
}
else
{
k=event.keyCode;
ctrl=event.ctrlKey;
}

if ((k==13 && ctrl) || (k==10)) sF(true);

}

e=document.forms.mess.message;

if (!document.all) document.captureEvents(Event.KEYDOWN)

e.onkeydown=ctrlenter;


поле с сообщением может быть типа этого:
<textarea id="message" name="message" rows=5 cols=70 style="width:100%;"></textarea>

__________________
Xριστος ανεστη εκ νεκρων
Θανατω θανατον πατησας.
Και τοις εν τοις μνημασι
Ζωην χαρισαμενος.

28.10.2005 12:27 Юрик оффлайн Искать сообщения : Юрик Добавить Юрик в адресную книгу
Понравилась тема? Поделитесь с друзьями!
Чтобы отвечать на сообщения и создавать новые темы, необходимо зарегистрироваться. Присоединяйся к нам! :-)
Перейти:

Все вопросы, связанные с деятельностью сайта и форума решаются с руководителем проекта.

powered by [censored] forum
7bit.team © 2001-2016