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, время: 13:47. |