Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.05.2010, 13:31
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Начало и конец выделения в HTML
Есть обычная текстовая страница, отданная сервером из БД, не WYSIWYG-редактор.
Выделяем какой-то текст, появляется всплывающее меню:

По нажатию на пункт всплывающего меню, на клиенте выделенный текст визуально становится ссылкой, адрес которой получаю с помощью XMLHttpRequest.

Вопрос: каким образом указать серверу начало и конец выделения, чтобы он мог проделать аналогичные действия со страницей в БД?

HTML отправлять бесполезно, браузеры его по своему форматируют, да и это не textarea, чтобы точно определить количество символов с начала блока. Есть идеи?
Ответить с цитированием
  #2 (permalink)  
Старый 05.05.2010, 13:39
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Свойство anchorOffset объекта Selection?
Ответить с цитированием
  #3 (permalink)  
Старый 05.05.2010, 17:49
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

anchorOffset — смещение начала выделения относительно anchorNode, которым может быть текстовый узел.

Можно поставить левую границу Range в начало контейнера с текстом, а правую — в начало выделения и получить range.toString().length, но браузеры даже количество пробельных символов по разному возвращают. Пока думаю отправлять этот кусок на сервер и там приводить его к общему виду с текстом из БД, удаляя все теги, дублирующиеся пробелы, переносы строк, как-то высчитывать разницу и добавлять ссылку в HTML, как оно там будет работать на сервере уже не моя проблема, мне нужно однозначно указать, какой участок текста поместить в тег.

Последний раз редактировалось Octane, 05.05.2010 в 18:16.
Ответить с цитированием
  #4 (permalink)  
Старый 05.05.2010, 18:04
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Octane, а может, лучше сделать обрамление на JS, а потом весь кусок отправить на сервер и там уже просто сохранить в БД? Смысл еще что-то делать на сервере?
Ответить с цитированием
  #5 (permalink)  
Старый 05.05.2010, 18:19
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

var start = (elem.textContent||elem.innerText).search(selectedText), finish = start+selectedText.length;
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #6 (permalink)  
Старый 05.05.2010, 18:28
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

e1f,
да думал над этим, но мало ли что пользователь может отправить на сервер, нужна только возможность добавить ссылку, а не изменить весь текст. Тогда придется сравнивать видоизмененный браузером HTML с исходным кодом. Определить, что там только вставлена ссылка и никакой текст больше не тронут, и только тогда перезаписывать его в БД. Это реально?)

Nekromancer,
как посчитать символы я знаю, проблема в том, что на клиенте и на сервере разный HTML-код получается и однозначно указать, куда вставить тег в HTML-код на сервере, не знаю как.

Последний раз редактировалось Octane, 05.05.2010 в 18:43.
Ответить с цитированием
  #7 (permalink)  
Старый 05.05.2010, 18:43
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Octane, Если не нужен полный wysiwyg, тогда конечно, не стоит
Насколько я понимаю, выделенный текст может быть и "между тегами", а в базе хранится кусок html-разметки?
Ответить с цитированием
  #8 (permalink)  
Старый 05.05.2010, 18:46
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Octane,
ну вот тут мы считаем не html, а сам текст.. разве с базой так же нельзя поступить, "забить" на теги?
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #9 (permalink)  
Старый 05.05.2010, 18:55
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

К примеру на сервере в БД такой код:
<div class="post" id="_12345">
	<p>Lorem Ipsum is <strong>simply</strong> dummy text.</p>
</div>

Internet Explorer отдаст в JavaScript его уже в таком виде:
<DIV id=_12345 class="post"><P>Lorem Ipsum is <STRONG>simply</STRONG> dummy text.</P></DIV>

Добавляем в дерево ссылку и получаем такой HTML-код:
<DIV id=_12345 class="post"><P>Lorem <A href="…">Ipsum is <STRONG>simply</STRONG> dummy</A> text.</P></DIV>

Вот и нужно сказать серверу, чтобы он тоже самое сделал с кодом в БД
Ответить с цитированием
  #10 (permalink)  
Старый 05.05.2010, 19:00
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Хорошо, а нельзя никак сохранить исходный html в js, когда пользователь выделит текст - вычислить это место и вставить в сохранённом html ссылку. И уже дальше так оперировать?
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление текста из html документа andikk Events/DOM/Window 12 26.07.2012 14:55
Загрузка внешнего html файл на страницу GRean (X)HTML/CSS 3 26.04.2010 14:16
Jquery манипулятор html JIEXA jQuery 6 18.03.2010 21:55
Динамические html элементы sky Элементы интерфейса 2 07.03.2010 11:58
установка позиции курсора или выделения в iframe mister_maxim Events/DOM/Window 5 18.04.2009 10:43