Я работал с объектами выбора/диапазона, и из-за невероятного количества несоответствий между браузерами для конкретных вещей выбора/диапазона (даже больше, чем DOM) мне было интересно, существует ли структура, которая помогла бы мне пройти через них.
Структура выбора/диапазона JavaScript
Ответы (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()
TextRange
в терминах узлов и смещений (как это делает Range) и преобразования их и объекта обратно в TextRange
. Однако он не может полностью абстрагироваться от различий между ними: например, базовый TextRange
изменится в ответ на изменения в DOM, в то время как IERange
, построенный на нем, не будет отражать эти изменения. Существуют также расхождения между тем, как выбор пользователя представлен в виде диапазона, которые зависят от браузера. [продолжение]
- person Tim Down; 26.01.2010
IERange
выполняется намного медленнее, чем получение диапазона DOM в других браузерах. Ни в одном из них нет вины библиотеки; это просто природа проблемы. Короче говоря, лучше всего использовать с осторожностью и знанием абстракции, которую представляет IERange
.
- person Tim Down; 26.01.2010
Я написал новую библиотеку диапазонов/выборов под названием Rangy, которая по своей концепции похожа на IERange, но идет намного дальше. Ядро практически готово и в настоящее время доступно для загрузки. В настоящее время я исправляю ошибки и документирую это, и до полного релиза должно пройти всего несколько недель.
ОБНОВЛЕНИЕ 31 августа 2011 г.
Теперь Rangy работает стабильно и имеет версию 1.2 (страница загрузок).
fieldselection — очень удобный плагин jquery для выбора/ манипулирование диапазоном.