У меня небольшая проблема/вопрос. Я работаю над небольшим редактором WYSIWYG. Я использую div с параметром contentEditable="true" и хотел бы знать, когда нажимается кнопка, какой элемент в моем div изменяется пользователем.
Например, если в div есть 3 абзаца, и этот пользователь изменяет второй, я хотел бы знать, когда он нажимает кнопку, которую он в настоящее время изменяет во втором абзаце, чтобы отобразить текстовое содержимое! В этом примере "P2":
<div contenteditable="true"><p>P1</p><p>P2</p><p>P3</p></div>
Заранее спасибо за помощь.
Николас
1 ответ
Вы можете проверить выбор в событии mousedown
кнопки. Следующее будет работать во всех основных браузерах:
function getSelectionBoundaryContainerElement(start) {
var container = null;
if (typeof window.getSelection != "undefined") {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0);
range.collapse(start);
container = range.startContainer;
if (container.nodeType != 1) {
container = container.parentNode;
}
}
} else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
var textRange = document.selection.createRange();
textRange.collapse(start);
container = textRange.parentElement();
}
return container;
}
document.getElementById("yourButtonId").onmousedown = function() {
alert(getSelectionBoundaryContainerElement().innerHTML);
}
Похожие вопросы
Связанные вопросы
Новые вопросы
contenteditable
contentEditable - это атрибут HTML (изобретенный Microsoft и стандартизированный в HTML5), который используется для редактирования «расширенного текста» в браузере на стороне клиента.