Я пишу сценарий, на котором пользователь должен иметь возможность выбрать какой-либо текст, который отправляется через ajax в скрипт backend для дальнейшего процесса.граничные точки диапазона не отвечают определенным требованиям
Я могу выбрать тонкие текстовые узлы или текстовые узлы, которые содержат жирный, курсив или подчеркнутый текст внутри него.
Для
например<p>This is <strong>some</strong> cool <em>italic</em> text, <u>really!</u></p>
Итак, что работает, что это круто.
Тем не менее, вопрос, если текстовый узел начинается с hsome жирным шрифтом, курсивом или подчеркнутым текстом или даже заголовков он выводит следующее сообщение об ошибке на FireFox консоли:
The boundary-points of a range does not meet specific requirements." code: "1 range.surroundContents($('<span...wAnno_'+newLen+'"></span>').get(0));
ошибка выводится, когда пользователь выбирает что-то вроде:
<strong>Mark says</strong> Hi
ИЛИ
<em>Mark says</em> Hi
ИЛИ
<u>Mark says</u> Hi
Та же ошибка выводит даже если текст заключен в теги заголовков например <h2>test</h2>
Мой код выглядит следующим образом:
var select = window.getSelection();
var parents = $(select.focusNode).parents('.the-content');
if($(select.focusNode).parent().hasClass('.highlighted')) {
alert('This text is already highlighted');
} else {
for(var i = 0; i < select.rangeCount; i++) {
var range = select.getRangeAt(i);
range.surroundContents($('<span class="newHighlight" id="newHigh_'+newLen+'"></span>').get(0));
}
}
var selectedText = select.toString();
мне нужна помощь с фиксацией этого.
Помощь с кодом будет потрясающей.
Можете ли вы посоветовать мне немного больше о методе № 2? Как окружить каждый текстовый узел пробелом? Я хотел бы использовать библиотеку rangy. Это выглядит потрясающе, но нет документации, которая поможет мне ее использовать. – Haris
Да, документации в настоящее время не хватает. Кодирование гораздо веселее. Теперь я опубликую что-то на сайте Google Code; Я отправлю сообщение здесь, как только закончу. –
Или есть способ изменить класс выделенного текста? – Haris