Помогите чайнику! Простейший скрипт...:!:

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
Andrewvp
Сообщения: 9
Зарегистрирован: 02 апр 2006, 11:20

Написал функцию: просто вставляет в текст текстария теги смайликов:

<script language='javascript'>
function smile(sml){
e1 = document.getElementById('ed1');
e1.focus();
document.selection.createRange().text=sml;
}
</script>
---------------------------------------
<textarea rows='20' id='ed1' name='A2' cols='55'>
--------------------------------------------------------------
[url=javascript:smile(':)')][img]smiles/smile_.gif[/img][/url]


И теперь это творение гения работает только в IE. FireFox не хавает, и еще кто-то там тоже.. Помогите, плз.. Народ на форуме стонет..
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Код: Выделить всё

<script type="text/javascript">

function addSmile(smile) {

	var txtarea = document.getElementById('editText');
	txtarea.focus();


	//if NN
	if (document.getSelection) {
		mozWrap(txtarea, smile);
	}

	//if IE
	else if (document.selection && document.selection.createRange) {
		document.selection.createRange().text = smile;
	}

}

function mozWrap(txtarea, smile) {

   var scrollPos = txtarea.scrollTop; 

   var selLength = txtarea.textLength;
   var selStart = txtarea.selectionStart;
   var selEnd = txtarea.selectionEnd;

   if (selEnd == 1 || selEnd == 2)
                    selEnd = selLength;

   var firstPart = (txtarea.value).substring(0, selStart);
   var lastPart = (txtarea.value).substring(selEnd, selLength);

   txtarea.value = firstPart + smile + lastPart;

   txtarea.setSelectionRange(selStart, selStart + smile.length);

   txtarea.scrollTop = scrollPos;

}

</script>

<textarea  id="editText" rows="20" cols="55">test test test</textarea>


[url=javascript:addSmile(':)')]SMILE[/url]
(c) Morfius, forum/viewtopic.php?t=5762

всего лишь упрощённый вариант
Andrewvp
Сообщения: 9
Зарегистрирован: 02 апр 2006, 11:20

А FireFox? Тоже поддерживает?
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

Andrewvp,

во-первых, угу,

а во-вторых, сложно проверить? или не работает?
Andrewvp
Сообщения: 9
Зарегистрирован: 02 апр 2006, 11:20

Oscar, к сожалению, только вечером сегодня...
StarLey
Сообщения: 11
Зарегистрирован: 28 мар 2006, 16:04
Откуда: Львов

Oscar писал(а):Andrewvp,
или не работает?
Мне кажеться что все работает
Andrewvp
Сообщения: 9
Зарегистрирован: 02 апр 2006, 11:20

да нет, просто решение нашел в другом месте, а предложеный код не работает в Firefox...
Скорее всего по причине кривых рук (моих, ессно :) )

т.к. страница формируется PHP, то броузер определяется на стадии формирования страницы, и проводить проверку в скрипте не надо.

для Firefox выдается следующий скрипт :
function smile(sml){
var txtarea = document.getElementById('ed1');
sml = ' ' + sml + ' ';
txtarea.value += sml;
}
недостаток - смайлик вставляется в конец текста. Т.к. заниматься плагиатом - неблагодарное занятие, засел за "матчасть". Думаю, своими руками писать будет лучше, потому как не могу даже вступить в дискуссию - нихрена не понимаю в теории "скриптов" :)
Ответить