ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

23.04.2007, 04:41
|
|
Участник форума
Регистрация: 13.02.2007
Сообщений: 205
Провел на форуме: 928552
Репутация:
55
|
|
Так... Такая проблема... 
Попробывал пример товарища Fr-Ron'a заюзать. Если код в <head></head> - то работает. Если в <body></body> - То не в какую! Что делать?
Вот приведите привер, как реализовать, чтобы текст вставлялся в форму:
Код:
<textarea type="text" rows=4 cols=40 name="text"></textarea>
Которая находится внутри тега <body>. Буду очень благодарен. 
|
|
|

23.04.2007, 06:43
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
Код:
function smilie(thesmilie)
{
getActiveText();
var AddSmilie = " " + thesmilie + " ";
AddText(AddSmilie);
}
function AddText(NewCode)
{
if (typeof(theform.message.createTextRange) != "undefined" && theform.message.caretPos)
{
var caretPos = theform.message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? NewCode + ' ' : NewCode;
caretPos.select();
}
else if (theform.message.selectionStart || theform.message.selectionStart == '0')
{ // its mozilla and we'll need to re-write entire text
var start_selection = theform.message.selectionStart;
var end_selection = theform.message.selectionEnd;
// fetch everything from start of text area to selection start
var start = (theform.message.value).substring(0, start_selection);
// fetch everything from start of selection to end of selection
var middle = NewCode;
// fetch everything from end of selection to end of text area
var end = (theform.message.value).substring(end_selection, theform.message.textLength);
theform.message.value = start + middle + end;
setfocus();
theform.message.selectionStart = end_selection + middle.length;
theform.message.selectionEnd = start_selection + middle.length;
getActiveText();
AddTxt = "";
return;
}
else
{
theform.message.value += NewCode;
}
setfocus();
getActiveText();
AddTxt = "";
}
<a href="#" onclick="smilie(';)'); return false;"><img src="images/smilies/smilehz.gif" alt="Wink" border="0" /></a>
и тд
наркоманское решение .. но все же =)
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
Последний раз редактировалось blackybr; 23.04.2007 в 06:57..
|
|
|

23.04.2007, 12:15
|
|
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме: 1204641
Репутация:
412
|
|
и так тоже не работает)
и в HEAD тоже не работает. мир - дерьмо. я убью себя
Последний раз редактировалось DRON-ANARCHY; 23.04.2007 в 12:21..
|
|
|

23.04.2007, 14:29
|
|
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме: 309455
Репутация:
41
|
|
А что насчет бб-тегов из разряда [#quote]? Как определить - какой текст (а вернее какая его часть) выделен в textarea?
|
|
|

23.04.2007, 14:36
|
|
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме: 1204641
Репутация:
412
|
|
Так... давайте сначала с моим вопросом разберемся))
а хотя ладно. .мне не жалко)
|
|
|

23.04.2007, 15:10
|
|
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме: 309455
Репутация:
41
|
|
да, кстати, те скрипты, что оговаривались выше - будут вставлять смайл в конец сообщения, или в текущую позицию в тексте?
|
|
|

23.04.2007, 16:40
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
По поводу "наркоманского решения" br:
Чет не вьехал в твоем коде вот в это:
Код:
theform.message.selectionStart = end_selection + middle.length;
theform.message.selectionEnd = start_selection + middle.length;
С такой реализацией начало выделения у тебя уползает от первоначального на middle.length символов вправо, что не есть гуд.
Имхо нужно заменить на
Код:
theform.message.selectionStart = start_selection;
theform.message.selectionEnd = start_selection + middle.length;
Тогда выделенный текст будет заменяться на код смайла, и этот самый код будет выделяться.
Еще на понятно, какими судьбами тут оказались:
Код:
setfocus();
getActiveText();
AddTxt = "";
Если действие setfocus() понятно по названию /привел бы код=)/, то что делает getActiveText() я вообще не вкурил, т.к. она не принимает никаких параметров, и , судя по всему, ничего не возвращает.
А что такое AddTxt я и предполагать боюсь...
Последний раз редактировалось Helios; 23.04.2007 в 16:45..
|
|
|

23.04.2007, 16:52
|
|
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме: 309455
Репутация:
41
|
|
т.е. за выделение отвечает фишка Middle ?
|
|
|

23.04.2007, 17:27
|
|
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме: 1469995
Репутация:
589
|
|
Мой вариант:
PHP код:
<script>
function insertSmilie(code) {
var myTextArea = document.getElementById('message');
//IE support
if (document.selection) {
myTextArea.focus();
sel = document.selection.createRange();
sel.text = code;
}
//MOZILLA/NETSCAPE support
else if (myTextArea.selectionStart || myTextArea.selectionStart == "0") {
var startPos = myTextArea.selectionStart;
var endPos = myTextArea.selectionEnd;
var oldText = myTextArea.value;
myTextArea.value = oldText.substring(0, startPos) + code + oldText.substring(endPos, oldText.length);
myTextArea.selectionStart = startPos;
myTextArea.selectionEnd = startPos + code.length;
} else {
myTextArea.value += code;
}
myTextArea.focus();
}
</script>
<textarea id="message" rows="7" cols="50">bla bla bla bla bla</textarea>
<a href="#" onclick="insertSmilie(':one:');">One</a>
2 Raz0r:
получение того, что выделено:
PHP код:
<script>
function getSelected()
{
var myTextArea = document.getElementById('message');
//IE support
if (document.selection) {
myTextArea.focus();
sel = document.selection.createRange();
return sel.text;
}
//MOZILLA/NETSCAPE support
else if (myTextArea.selectionStart || myTextArea.selectionStart == "0") {
var startPos = myTextArea.selectionStart;
var endPos = myTextArea.selectionEnd;
var oldText = myTextArea.value;
return oldText.substring(startPos, endPos);
} else {
return '';
}
}
</script>
Последний раз редактировалось Helios; 23.04.2007 в 17:30..
|
|
|

23.04.2007, 20:31
|
|
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме: 8042357
Репутация:
3742
|
|
Зато работает..
я вам не все ф-ии кинул просто..
априбавим к тому.. и все отлично работает
Код:
var AddTxt = "";
function getActiveText()
{
setfocus();
if (!is_ie || (is_ie && !document.selection))
{
return false;
}
var sel = document.selection;
var rng = sel.createRange();
if (rng != null && (sel.type == "Text" || sel.type == "None"))
{
text = rng.text;
}
if (rng != null && theform.message.createTextRange)
{
theform.message.caretPos = rng.duplicate();
}
return true;
}
function setfocus()
{
theform.message.focus();
}
__________________
Привет! Меня зовут Джордж, и я хотел бы рассказать вам про реинкарнацию (ц) 2x2
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|