Переделать JS код для работы в браузерах Gecko

DeltaDIM

Новичок
Переделать JS код для работы в браузерах Gecko

Доброго всем времени суток! Помогите переделать код чтобы от корректно отображался в браужерах с движком
Gecko!


var sel = document.selection.createRange();
var selTxt = sel.text;
var sHTML = "[" + sTag;
sHTML += ("]" +selTxt + "[/" + ((eTag)?eTag:sTag) + "]");


if (selTxt) sel.text = sHTML;
else document.form1.text.value += sHTML;
 

DeltaDIM

Новичок
Profic

Для обрамления текста bb кодами.
Допустим есть текст в текстовом поле. Выделяем нужную часть текста, затем, жмем кнопку и выделенный текст обрамляется каким-либо кодом. Например "Например".

-~{}~ 10.02.06 08:28:

...неудачный пример...
Можно так [COD]Например[/COD]

-~{}~ 10.02.06 11:39:

В общем-то после долгих поисков решение все же было найдено:
В Gecko объекта selection, как я понял, не существует (за это ему "минус":)). Однако, есть возможность

определить начало и конец выделенного текста в текстовом поле, и уже исходя из этого при помощи ф-ции

substr делать все что нужно.
Вод код (проверял на IE и на Firefox):

function setTag(sTag, eTag){
obj = document.form1.text;

if (document.selection){
var sel = document.selection.createRange();
var selTxt = sel.text;
var sHTML = "[" + sTag;

sHTML += ("]" +selTxt + "[/" + ((eTag)?eTag:sTag) + "]");


if (selTxt) sel.text = sHTML;
else document.form1.text.value += sHTML;
}
else if (typeof(obj.selectionStart)=="number"){
if (obj.selectionStart!=obj.selectionEnd){
var start = obj.selectionStart;
var end = obj.selectionEnd;

var selTxt = obj.value.substr(start,(end-start));
var sHTML = "[" + sTag;

sHTML += ("]" +selTxt + "[/" + ((eTag)?eTag:sTag) + "]");

obj.value = obj.value.substr(0,start)+sHTML+obj.value.substr(end);
}
}
}

obj = document.form1.text; - указать на текстовое поле.
...
Не сильно удобно. Но, может кто предложит лучше!
 
Сверху