Я использую contenteditable
и выделяю текст. Затем я хочу создать резервную копию этого текстового диапазона, и в дальнейшем вы получите этот диапазон (текст) другого цвета. Если я проверю свой метод zss_editor.restorerange
, я вернусь к действительному объекту selection
, поэтому он должен быть чем-то неправильным в том, как я ранее сохранял этот диапазон.Сохранить выбранный диапазон текста для использования позже Не работает
var zss_editor = {};
// The current selection
zss_editor.currentSelection;
zss_editor.backuprange = function(){
var selection = window.getSelection();
zss_editor.currentSelection = selection.getRangeAt(0);
zss_editor.currentSelection.setEnd(zss_editor.currentSelection.startContainer, zss_editor.currentSelection.startOffset);
}
zss_editor.restorerange = function(){
var selection = window.getSelection();
selection.removeAllRanges();
selection.addRange(zss_editor.currentSelection);
console.log(zss_editor.currentSelection);
}
zss_editor.setTextColor = function(color) {
zss_editor.restorerange();
document.execCommand("styleWithCSS", null, true);
document.execCommand('foreColor', false, color);
document.execCommand("styleWithCSS", null, false);
}
zss_editor.setBackgroundColor = function(color) {
zss_editor.restorerange();
document.execCommand("styleWithCSS", null, true);
document.execCommand('hiliteColor', false, color);
document.execCommand("styleWithCSS", null, false);
}
Рабочего пример на JS Fiddle: http://jsfiddle.net/zedsaid/gC3jq/11/
Почему, когда я резервное копирование диапазона и хотим восстановить его в последний раз, она не работает? Нужно ли мне резервировать диапазон по-другому?
your'e не создавая «резервную копию» диапазона, вы бы необходимо ['cloneRange()'] (https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange), чтобы скопировать диапазон. – Teemu
@Teemu Можете ли вы отправить пример? –
[Здесь] (http://jsfiddle.net/d7UMt/) ... Хотя при изменении фона происходит что-то странное, оно изменяется после размытия и переориентации окна. – Teemu