Ответ 1
Для проблемного браузера:
document.selection.empty()
Для других браузеров:
window.getSelection().removeAllRanges()
У меня есть эта функция
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 ()
это не сработало.
Для проблемного браузера:
document.selection.empty()
Для других браузеров:
window.getSelection().removeAllRanges()
Примечание. Если вы выберете текст элемента ввода или 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);
Использование tinymce.activeEditor.selection.collapse()
если это не сработает, используйте const range = tinymce.activeEditor.dom.createRng();
tinymce.activeEditor.selection.setRng(range)