Samsam,
:-? Цитата:
https://habrahabr.ru/post/232965/ https://learn.javascript.ru/range-textrange-selection https://habrahabr.ru/post/55922/ делать визуальный редактор сложно, за это редко кто берётся, ищите готовые решения |
('body').on('input', '.textarea', function() { var msg = $(this).html(); var selection = window.getSelection(); var range = selection.getRangeAt(0); //Ищи Img и меняю если это смайл var a = msg.replace(/<img[^>]+>/g, function(i) { var tag = i.match(/src="([^"]+)"/)[1]; if (tag == 'http://domen.ru/smiles/1.png') return ':)' ; if (tag == 'http://domen.ru/smiles/2.png') return ':(' ; ...... else return '' ; }); //Потом удаляю все теги var b = a.replace(/<[^>]*?>/g , ''); //Обратно меняю символы на img через функцию var d = vozvratIMG(b); // И вывожу $(this).html(d); //Удаляю все range selection.removeAllRanges(); //выставляю новый selection.addRange(range); }); Каретка возвращается но только до того момента как я поставлю смайл. После этого при каждом нажатие каретку сбрасывает в начало. А если удалить selection.removeAllRanges(); то каретка будет возвращатсяс к предыдущему смайлу. Как я понимаю он не может запомнить range. Как мне быть ? подскажите . |
рони, Подскажите почему не сохраняется range ?
|
Samsam,
не могу помочь |
рони, Подскажите как убрать лишние пробелы в начале и в конце строки
Вариант replace(/^\s+|\s+$/g, ''); или trim() не работают c contenteditable |
var str = ' blabla bla '; while(str[0]== ' ') str = str.slice(1); while(str[str.length-1]==' ') str = str.slice(0, str.length-1); console.log(str); |
Цитата:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> <script> $(function() { $('.editor').html(function(i ,html) { return html.replace(/ /g, '').replace(/^\s+|\s+$/g, '') }) }); </script> </head> <body> <div class="editor" contenteditable=""> test </div> </body> </html> |
Спс. рони, После того как прочитал ваш ответ и до самого дошло =)
Сейчас продолжаю разбираться с wysiwyg действительно объёмная тема. Но посмотрим что выйдет. Ещё хотел спросить у вас совет. по поводу динамического вывода новых записей из бд (сообщений, комментарий, уведомлений) . Что логично использовать в этих случаях что бы сервер меньше нагружался ? |
Samsam,
задайте свой вопрос по серверу тут https://javascript.ru/forum/server/ или дождитесь специалиста |
Здравствуйте рони, подскажите каким образом можно узнать в какой тег обвёрнут выделенный текст window.getSelection().
Нужно для того что бы при первом нажатие текст оборачивался в определённый тег . При повторном нажатие скрипт проверял на наличие этого тега и если он есть удалял его. Спасибо |
Цитата:
Цитата:
|
Часовой пояс GMT +3, время: 11:26. |