|
|
|
| При обрамлении текста, если прокрутка поля была опущена вниз, она сбрасывается на начало, т.е. на верх, и теряется из поля зрения то, что выделял. При небольших объемах кода это не страшно, но когда текста довольно много - жутко напрягает. Странно что ни кто не жаловался.
так выглядит код в данный момент
function tag(text1, text2)
{
if ((document.selection))
{
document.form.message.focus();
document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
} else if(document.forms['form'].elements['message'].selectionStart != undefined) {
var element = document.forms['form'].elements['message'];
var str = element.value;
var start = element.selectionStart;
var length = element.selectionEnd - element.selectionStart;
element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length);
} else document.form.message.value += text1+text2;
}
|
Чтобы исправить глюк, нужно добавить всего пару строк, а именно:
function tag(text1, text2)
{
if ((document.selection))
{
document.form.message.focus();
document.form.document.selection.createRange().text = text1+document.form.document.selection.createRange().text+text2;
} else if(document.forms['form'].elements['message'].selectionStart != undefined) {
var element = document.forms['form'].elements['message'];
// сохранить позицию скролла
var scroll = element.scrollTop;
var str = element.value;
var start = element.selectionStart;
var length = element.selectionEnd - element.selectionStart;
element.value = str.substr(0, start) + text1 + str.substr(start, length) + text2 + str.substr(start + length);
// вернуть как было
element.scrollTop = scroll;
} else document.form.message.value += text1+text2;
}
|
И будет пользователям мозиллы счастье. | |
|
|