ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > PHP, PERL, MySQL, JavaScript
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 23.04.2007, 04:41
Linuxoid
Участник форума
Регистрация: 13.02.2007
Сообщений: 205
Провел на форуме:
928552

Репутация: 55
Отправить сообщение для Linuxoid с помощью ICQ
По умолчанию

Так... Такая проблема...
Попробывал пример товарища Fr-Ron'a заюзать. Если код в <head></head> - то работает. Если в <body></body> - То не в какую! Что делать?

Вот приведите привер, как реализовать, чтобы текст вставлялся в форму:
Код:
<textarea type="text" rows=4 cols=40 name="text"></textarea>
Которая находится внутри тега <body>. Буду очень благодарен.
 

  #2  
Старый 23.04.2007, 06:43
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

Код:
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..
 

  #3  
Старый 23.04.2007, 12:15
DRON-ANARCHY
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме:
1204641

Репутация: 412


Отправить сообщение для DRON-ANARCHY с помощью ICQ
По умолчанию

и так тоже не работает)
и в HEAD тоже не работает. мир - дерьмо. я убью себя

Последний раз редактировалось DRON-ANARCHY; 23.04.2007 в 12:21..
 

  #4  
Старый 23.04.2007, 14:29
Raz0r
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме:
309455

Репутация: 41
По умолчанию

А что насчет бб-тегов из разряда [#quote]? Как определить - какой текст (а вернее какая его часть) выделен в textarea?
 

  #5  
Старый 23.04.2007, 14:36
DRON-ANARCHY
Отец порядка
Регистрация: 04.03.2005
Сообщений: 1,007
Провел на форуме:
1204641

Репутация: 412


Отправить сообщение для DRON-ANARCHY с помощью ICQ
По умолчанию

Так... давайте сначала с моим вопросом разберемся))
а хотя ладно. .мне не жалко)
 

  #6  
Старый 23.04.2007, 15:10
Raz0r
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме:
309455

Репутация: 41
По умолчанию

да, кстати, те скрипты, что оговаривались выше - будут вставлять смайл в конец сообщения, или в текущую позицию в тексте?
 

  #7  
Старый 23.04.2007, 16:40
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

По поводу "наркоманского решения" 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..
 

  #8  
Старый 23.04.2007, 16:52
Raz0r
Участник форума
Регистрация: 07.01.2007
Сообщений: 259
Провел на форуме:
309455

Репутация: 41
По умолчанию

т.е. за выделение отвечает фишка Middle ?
 

  #9  
Старый 23.04.2007, 17:27
Helios
Постоянный
Регистрация: 14.01.2007
Сообщений: 459
Провел на форуме:
1469995

Репутация: 589
Отправить сообщение для Helios с помощью ICQ
По умолчанию

Мой вариант:
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(0startPos) + code oldText.substring(endPosoldText.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(startPosendPos);
    } else {
        return 
'';
    }
}
</
script

Последний раз редактировалось Helios; 23.04.2007 в 17:30..
 

  #10  
Старый 23.04.2007, 20:31
blackybr
♠ ♦ ♣ ♥
Регистрация: 18.05.2006
Сообщений: 1,828
Провел на форуме:
8042357

Репутация: 3742


Отправить сообщение для blackybr с помощью ICQ Отправить сообщение для blackybr с помощью AIM Отправить сообщение для blackybr с помощью Yahoo
По умолчанию

Зато работает..

я вам не все ф-ии кинул просто..
априбавим к тому.. и все отлично работает
Код:
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)
 


Быстрый переход




ANTICHAT.XYZ