Подтвердить что ты не робот

Очистить выбор в Firefox

У меня есть эта функция

function smth() {
var container = null;
var newContainer = null;
if (window.getSelection) {  // all browsers, except IE before version 9
    alert("first if");
    var selectionRange = window.getSelection();
    if (selectionRange.rangeCount > 0) {
        var range = selectionRange.getRangeAt(0);
        container = range.commonAncestorContainer;
        newContainer = container;
    }
}
else {
    if (document.selection) {   // Internet Explorer
        alert("second if");
        var textRange = document.selection.createRange();
        container = textRange.parentElement();
    }
}

if (newContainer) {
    return newContainer.nodeName;
}
else {
    alert("Container object for the selection is not available!");
}
}     

Теперь, после того как я сделаю то, что мне нужно сделать с выбором, мне нужно его очистить. я пробовал несколько вещей, ничего не работало, никаких идей?

document.selection.clear ()    

это не сработало.

4b9b3361

Ответ 1

Для проблемного браузера:

document.selection.empty()

Для других браузеров:

window.getSelection().removeAllRanges()

См. http://help.dottoro.com/ljigixkc.php

Ответ 2

Примечание. Если вы выберете текст элемента ввода или textarea, тогда ваш код будет иметь более кросс-браузерную поддержку, если вы будете использовать стандартный метод выбора элемента html для ввода или textarea.

Если элемент html input или textarea был выбран с использованием собственного метода выбора, то использование методов, предложенных выше, не работает на моем firefox 44.0.2. Что сработало для него, и я полагаю, что работает над ALL BROWSERS, работает следующий код, который создает новый элемент и выбирает его. Новый элемент не может быть с display:none или visibility:hidden, потому что тогда он не выбран в моем Firebox, поэтому трюк должен сделать его невидимым, заставив все атрибуты размера 0\none.

var tempElement = document.createElement("input");
tempElement.style.cssText = "width:0!important;padding:0!important;border:0!important;margin:0!important;outline:none!important;boxShadow:none!important;";
document.body.appendChild(tempElement);
tempElement.select();
/* Use removeChild instead of remove because remove is less supported */
document.body.removeChild(tempElement);

Ответ 3

Использование   tinymce.activeEditor.selection.collapse()  если это не сработает, используйте   const range = tinymce.activeEditor.dom.createRng(); tinymce.activeEditor.selection.setRng(range)