Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Забавный эффект!

Сообщения:  [1-2] 

 
 автор: Holsten Bier   (05.08.2006 в 05:39)   письмо автору
 
   для: 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]";
        }
    }
}


Однако выражение:


ftr.inRange(dsr)


настройчиво возвращает false.
Поясню, ftr - объект TextRange для поля textarea, а dsr - объект TextRange, соответствующий выделенному участку текста в данном поле. По идее, один входит в другой.

Пробовал даже


dsr.inRange(ftr)


но тоже не работает :(

Подскажите, пожалуйста, почему inRange() не работает. (IE6)

   
 
 автор: Holsten Bier   (05.08.2006 в 03:29)   письмо автору
 
 

Здравствуйте, столкнулся вот с каким интересным эффектом работы с 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'), начинается самое интересное. Ссылка, та, что упоминалась выше, преображается: не найдя нужного выделенного в поле текста, ББ-коды примыкают к тексту ссылки.

Визуализацию данного эффекта см. в аттаче.

Есть подозрение, что в отсутствие выделенного текста мои ББ-коды "приклеиваются" к первому же слову документа. Так ли это и если так то почему?

   

Сообщения:  [1-2] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования