Структура выбора/диапазона JavaScript

Я работал с объектами выбора/диапазона, и из-за невероятного количества несоответствий между браузерами для конкретных вещей выбора/диапазона (даже больше, чем DOM) мне было интересно, существует ли структура, которая помогла бы мне пройти через них.


person Luca Matteis    schedule 25.01.2010    source источник
comment
Вы видели code.google.com/p/ierange?   -  person Roatin Marth    schedule 25.01.2010
comment
Роатин, это именно то, что я искал! Можете ли вы сделать это вопросом, чтобы я мог проголосовать за вас? :)   -  person Luca Matteis    schedule 25.01.2010


Ответы (3)


(Сделал ответ по запросу;)

Взгляните на IERange:

IERange — это полнофункциональная реализация W3C DOM Ranges для Internet Explorer, что позволяет пользователям писать одну кросс-браузерную версию своего кода манипулирования диапазоном.

Поддерживает API диапазона:

  • document.createRange()
  • startContainer, startOffset, endContainer, endOffset, commonAncestorContainer, collapsed
  • setStart(), setEnd(), setStartBefore(), setStartAfter(), setEndBefore(), setEndAfter(), selectNode(), selectNodeContents(), collapse()
  • insertNode(), surroundContents()
  • extractContents(), cloneContents(), deleteContents()
  • compareBoundaryPoints(), cloneRange(), createContextualFragment(), toString()

Поддерживает API выбора:

  • Поддержка диапазона (стиль Webkit)
  • window.getSelection()
  • addRange(), removeAllRanges(), getRangeAt(), toString()
person Roatin Marth    schedule 25.01.2010
comment
Самая сильная сторона IERange — это его алгоритмы для выражения TextRange в терминах узлов и смещений (как это делает Range) и преобразования их и объекта обратно в TextRange. Однако он не может полностью абстрагироваться от различий между ними: например, базовый TextRange изменится в ответ на изменения в DOM, в то время как IERange, построенный на нем, не будет отражать эти изменения. Существуют также расхождения между тем, как выбор пользователя представлен в виде диапазона, которые зависят от браузера. [продолжение] - person Tim Down; 26.01.2010
comment
Также обратите внимание, что создание IERange выполняется намного медленнее, чем получение диапазона DOM в других браузерах. Ни в одном из них нет вины библиотеки; это просто природа проблемы. Короче говоря, лучше всего использовать с осторожностью и знанием абстракции, которую представляет IERange. - person Tim Down; 26.01.2010

Я написал новую библиотеку диапазонов/выборов под названием Rangy, которая по своей концепции похожа на IERange, но идет намного дальше. Ядро практически готово и в настоящее время доступно для загрузки. В настоящее время я исправляю ошибки и документирую это, и до полного релиза должно пройти всего несколько недель.

ОБНОВЛЕНИЕ 31 августа 2011 г.

Теперь Rangy работает стабильно и имеет версию 1.2 (страница загрузок).

person Tim Down    schedule 11.10.2010
comment
Спасибо за вашу прекрасную работу над Rangy Tim Down. Я использую вашу библиотеку в своем новом проекте и уже отправил вам отчет об ошибке. Я думаю, было бы неплохо создать список рассылки, чтобы можно было обсуждать проблемы/особенности и предлагать новые функции (возможно, с патчем). Например, в настоящее время я пытаюсь получить startOffset и endOffset для commonAncestorContainer, а не контейнеры start/end. Я считаю, что это была бы полезная функция. - person Tom; 19.10.2010

fieldselection — очень удобный плагин jquery для выбора/ манипулирование диапазоном.

person miku    schedule 25.01.2010