Библиотека диапазонов выбора между браузерами?

Кто-нибудь знает какие-либо библиотеки диапазонов выбора пользователей для разных браузеров, написанные на javascript?

Я нашел несколько плагинов jQuery, (которые, откровенно говоря, слишком ограничены и содержат много ошибок.)

Я просто хотел бы знать, что вы там обнаружили. Не присылайте мне снова гуглить (я целыми днями работал над всем этим). Надеюсь, именно здесь будущие программисты смогут найти ответ.

18
задан UpHelix 5 July 2018 в 17:58
поделиться

3 ответа

Я разработал кроссбраузерную библиотеку диапазонов и выбора под названием Rangy . Его ядро ​​не отличается по концепции от IERange, но выходит за его пределы с точки зрения реализации DOM level 2 Range и спецификаций выбора HTML5, а также с точки зрения стабильности и обходных путей для ошибок браузера. Я думаю, это лучшее, что есть на свете.

Существуют также дополнительные модули для сохранения, восстановления и сериализации выборок и применения класса CSS к диапазонам и выборкам.

https://github.com/timdown/rangy

В следующем примере используются некоторые Rangy-расширения для диапазонов, чтобы легко перебирать текстовые узлы в выделенном фрагменте и окружать каждый из них:

function surroundSelectedText(templateElement){
    var range, sel = rangy.getSelection();
    var ranges = sel.getAllRanges();
    var textNodes, textNode, el, i, len, j, jLen;
    for (i = 0, len = ranges.length; i < len; ++i) {
        range = ranges[i];
        // If one or both of the range boundaries falls in the middle
        // of a text node, the following line splits the text node at the
        // boundary
        range.splitBoundaries();

        // The first parameter below is an array of valid nodeTypes
        // (in this case, text nodes only)
        textNodes = range.getNodes([3]);

        for (j = 0, jLen = textNodes.length; j < jLen; ++j) {
            textNode = textNodes[j];
            el = templateElement.cloneNode(false);
            textNode.parentNode.insertBefore(el, textNode);
            el.appendChild(textNode);
        }
    }
}

var span = document.createElement("span");
span.style.color = "green";
span.style.fontWeight = "bold";

surroundSelectedText(span);
38
ответ дан 30 November 2019 в 07:03
поделиться

Для работы с диапазоном общего назначения (в отличие от обработки выбора ввода / текстового поля) рассмотрите вариант ierange . Попытки реализовать в IE стандартную модель DOM Level 2 Range, поддерживаемую другими браузерами. Вид работ.

1
ответ дан 30 November 2019 в 07:03
поделиться

Для опции плагина jQuery есть jCaret, вы можете проверить домашнюю страницу здесь и примеры здесь .

Я использовал это в нескольких проектах для различных приложений, хорошо работает при устранении несоответствий между браузерами.

2
ответ дан 30 November 2019 в 07:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: