|
|
|
|
|
для: Holsten Bier
(05.08.2006 в 03:29)
| | После некоторых раздумий я попытался изменить функцию:
function useBB(code) {
var d = document;
var dsr = d.selection.createRange();
var ftr = d.mainForm.description.createTextRange();
var str = dsr.text;
if (ftr.inRange(dsr)) {
if (code == "b" || code == "p" || code == "i" || code == "strong" || code == "u") {
dsr.text = "[" + code + "]" + str + "[/" + code + "]";
} else if (code == "a") {
var href = window.prompt("Введите URL:", "");
if (href != "")
dsr.text = "[a href=\"" + href + "\"]" + str + "[/a]";
}
}
}
|
Однако выражение:
настройчиво возвращает false.
Поясню, ftr - объект TextRange для поля textarea, а dsr - объект TextRange, соответствующий выделенному участку текста в данном поле. По идее, один входит в другой.
Пробовал даже
но тоже не работает :(
Подскажите, пожалуйста, почему inRange() не работает. (IE6) | |
|
|
|
|
|
|
| Здравствуйте, столкнулся вот с каким интересным эффектом работы с TextRange:
Есть у меня страница, на ней - форма, в форме - поле textarea. В начале страницы имеется ссылка (роль ее в этой истории станет ясна ниже). Приведу участок кода:
<BODY><DIV class="nav"><A href="../">Администрирование</A>...</DIV>
|
Над полем расположены ссылки (если их так можно назвать) вида:
<A href="javascript: void(0)" onClick="javascript: useBB('b');"><IMG src="..."></A>
<A href="javascript: void(0)" onClick="javascript: useBB('p');"><IMG src="..."></A>
|
Как вы, наверное, уже догадались, функция useBB(code) позволяет применить к выделенному в поле textarea тексту некое подобие BB-кодов. Вот ее код:
function useBB(code) {
var d = document;
var str = d.selection.createRange().text;
if (code == "b" || code == "p" || code == "i" || code == "strong" || code == "u") {
d.selection.createRange().text = "[" + code + "]" + str + "[/" + code + "]";
} else if (code == "a") {
var href = window.prompt("Введите URL:", "");
if (href != "")
d.selection.createRange().text = "[a href=\"" + href + "\"]" + str + "[/a]";
}
}
|
Код ориентируется на IE, и все работает на ура - нужные вставки кодов выполняются, если (!) в поле выделен какой-либо текст. Однако, если выделения нет и мы попытаемся вызвать, к примеру, useBB('b'), начинается самое интересное. Ссылка, та, что упоминалась выше, преображается: не найдя нужного выделенного в поле текста, ББ-коды примыкают к тексту ссылки.
Визуализацию данного эффекта см. в аттаче.
Есть подозрение, что в отсутствие выделенного текста мои ББ-коды "приклеиваются" к первому же слову документа. Так ли это и если так то почему? | |
|
|
|
|