Небольшое дополнение к
выложенному выше исправлению. Оно решает проблемы с неправильной установкой курсора после выполнения цитирования с помощью выделения фрагмента текста сообщений. Проблема проявляется, если выделенный для цитирования фрагмент содержит переходы на новую строку. Opera 10.50 устанавливает курсор на
N позиций (символов) раньше конца закрывающего тега цитирования ([/quote]). Firefox 3.6, наоборот, сдвигается на
N позиций дальше. В данной ситуации
N - это количество переходов на новую строку в цитируемом фрагменте текста.
Причина, как оказалось, кроется в символе возврата каретки (\r). Разные браузеры (JS-движки) его по-разному интепретируют. Firefox, например, вообще его опускает в полях формы textarea, Opera 10.50 - наоборот - принудительно его вставляет перед символом перехода на новую строку (\n).
Решение такое. Откройте файл
javascript/formcode.js, найдите строку:
CODE: TextArea.value = LeftText + L + SelectedText + R + RightText;
и после неё разместите строки:
CODE:
if (isMozilla)
L = L.replace(/\r/g, '');
else if (isOpera && L.indexOf('\r') == -1)
L = L.replace(/\n/g, '\r\n');
Данное дополнение уже включено в
инструкцию выше. Оно было проверено в IE6, Opera 9.52, Opera 10.50, Firefox 3.6 и Chrome 4.0.249.89