Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.04.2013, 14:20
Кандидат Javascript-наук
Отправить личное сообщение для OklickSpb Посмотреть профиль Найти все сообщения от OklickSpb
 
Регистрация: 17.02.2012
Сообщений: 130

bb-code в IE
Всем доброго времени суток!
Вот код, который должен выделенную часть текста возводить в теги. Проблема в том, что он не работает в IE, плиз, помогите, в чем ошибка?
function textEncoding(Type, elem)
{
	var Tag,Tag2;
	for(var key in textCodes) {
		if(key == Type)
		{
			Tag  = textCodes[key][0];
			Tag2 = textCodes[key][1];
		}
	}
	allAreas = $(elem).parent().parent().parent().children("#TextTextArea");
	if ($.browser.msie) {
		var doc = allAreas[0];
		doc.focus();
		sel = document.selection.createRange();
                if(sel.text !=""){
		sel.text = Tag+sel.text+Tag2;
		doc.focus();}
    }
	else {
		var doc = allAreas[0];
		var ss = doc.scrollTop;
		start = doc.value.substr(0, doc.selectionStart);
		end = doc.value.substr(doc.selectionEnd);
		sel = doc.value.substr(doc.selectionStart,
		                  doc.selectionEnd - doc.selectionStart);
                if(!sel ==""){
		doc.value = start + Tag + sel + Tag2 + end;
		selPos = Tag.length + start.length + sel.length + Tag2.length;
		doc.setSelectionRange(start.length, selPos);
		doc.scrollTop = ss;}
	}
}

Вызывается так:
<li id=bold_button style="border-left: 1px solid silver;" onclick="textEncoding(\'b\',this)"><b>Ж</b></li>

Причем, если я вызываю так:
<li id=bold_button style="border-left: 1px solid silver;"><i><a id="2er" href="javascript: textEncoding(\'i\',this)">К</a></i></li>
, то все работает, но при этом не передается this, да и вообще я не люблю так вызывать JS.

Последний раз редактировалось OklickSpb, 27.04.2013 в 14:44.
Ответить с цитированием
  #2 (permalink)  
Старый 27.04.2013, 16:05
Кандидат Javascript-наук
Отправить личное сообщение для OklickSpb Посмотреть профиль Найти все сообщения от OklickSpb
 
Регистрация: 17.02.2012
Сообщений: 130

Понял в чем причина:
При нажатии на кнопку, которая отвечает за выполнение функции, в IE сбрасывается выделение с текста...
как справиться с этим?
Ответить с цитированием
  #3 (permalink)  
Старый 27.04.2013, 16:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Может focus лишний раз вызывается. И еще. if ($.browser.msie) - очень ненадежное решение. Во-первых в новых версиях jQuery не будет работать. Во-вторых в следующих версия ie могут дропнуть document.selection.
Так что лучше feature detection. Например if ('selectionStart' in doc)
Ответить с цитированием
  #4 (permalink)  
Старый 27.04.2013, 21:27
Кандидат Javascript-наук
Отправить личное сообщение для OklickSpb Посмотреть профиль Найти все сообщения от OklickSpb
 
Регистрация: 17.02.2012
Сообщений: 130

Спасибо)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fight code.... js игрулька для программистов l-liava-l Оффтопик 8 29.03.2013 12:24
Функция парсинга строки в массив байт. B~Vladi Ваши сайты и скрипты 50 28.12.2011 16:16
The only valid measurement of code quality: WTFs/m x-yuri Оффтопик 0 30.01.2011 13:26
XHR && HTTP 403 status code && Opera Ex_Soft Opera, Safari и др. 9 05.01.2011 16:44
глюк форума Gvozd Сайт Javascript.ru 11 18.03.2009 14:37