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, время: 18:38. |