Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 09.01.2018, 16:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Samsam,

Цитата:
Написал функцию которая вставляет курсор после элемента,
вам же ссылку давали ...
https://habrahabr.ru/post/232965/

https://learn.javascript.ru/range-textrange-selection

https://habrahabr.ru/post/55922/

делать визуальный редактор сложно, за это редко кто берётся, ищите готовые решения
Ответить с цитированием
  #42 (permalink)  
Старый 11.01.2018, 03:25
Кандидат Javascript-наук
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 100

('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. Как мне быть ? подскажите .
Ответить с цитированием
  #43 (permalink)  
Старый 11.01.2018, 17:25
Кандидат Javascript-наук
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 100

рони, Подскажите почему не сохраняется range ?
Ответить с цитированием
  #44 (permalink)  
Старый 11.01.2018, 17:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Samsam,
не могу помочь
Ответить с цитированием
  #45 (permalink)  
Старый 16.01.2018, 20:49
Кандидат Javascript-наук
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 100

рони, Подскажите как убрать лишние пробелы в начале и в конце строки
Вариант replace(/^\s+|\s+$/g, ''); или trim() не работают c contenteditable
Ответить с цитированием
  #46 (permalink)  
Старый 16.01.2018, 23:31
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

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);
Ответить с цитированием
  #47 (permalink)  
Старый 17.01.2018, 01:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от Samsam
Вариант replace(/^\s+|\s+$/g, '');
<!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(/&nbsp;/g, '').replace(/^\s+|\s+$/g, '')
})

});
  </script>
</head>

<body>
<div class="editor" contenteditable="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;test &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>

</body>
</html>
Ответить с цитированием
  #48 (permalink)  
Старый 17.01.2018, 03:07
Кандидат Javascript-наук
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 100

Спс. рони, После того как прочитал ваш ответ и до самого дошло =)
Сейчас продолжаю разбираться с wysiwyg действительно объёмная тема. Но посмотрим что выйдет. Ещё хотел спросить у вас совет. по поводу динамического вывода новых записей из бд (сообщений, комментарий, уведомлений) . Что логично использовать в этих случаях что бы сервер меньше нагружался ?
Ответить с цитированием
  #49 (permalink)  
Старый 17.01.2018, 03:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Samsam,
задайте свой вопрос по серверу тут https://javascript.ru/forum/server/ или дождитесь специалиста
Ответить с цитированием
  #50 (permalink)  
Старый 08.02.2018, 00:07
Кандидат Javascript-наук
Отправить личное сообщение для Samsam Посмотреть профиль Найти все сообщения от Samsam
 
Регистрация: 24.04.2014
Сообщений: 100

Здравствуйте рони, подскажите каким образом можно узнать в какой тег обвёрнут выделенный текст window.getSelection().

Нужно для того что бы при первом нажатие текст оборачивался в определённый тег . При повторном нажатие скрипт проверял на наличие этого тега и если он есть удалял его. Спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выполнение кода только один раз в несколько секунд. Threaded_Inquisitor Элементы интерфейса 7 18.10.2013 09:15
как запретить вызов функции чаще n раз в несколько секунд ? linklee Общие вопросы Javascript 2 19.07.2013 14:52
Почему не срабатывают функции? allanmiln AJAX и COMET 1 10.04.2013 22:05
Переодическая работа функции adik7960 Общие вопросы Javascript 8 16.12.2012 11:13
live click выполняется несколько раз hara jQuery 9 09.06.2010 10:58