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. |
Понял в чем причина:
При нажатии на кнопку, которая отвечает за выполнение функции, в IE сбрасывается выделение с текста... как справиться с этим? |
Может focus лишний раз вызывается. И еще. if ($.browser.msie) - очень ненадежное решение. Во-первых в новых версиях jQuery не будет работать. Во-вторых в следующих версия ie могут дропнуть document.selection.
Так что лучше feature detection. Например if ('selectionStart' in doc) |
Спасибо)
|
Часовой пояс GMT +3, время: 23:00. |