我建立了一个非常简单的contenteditable
编辑器,它允许以下内容:
- 答:链接
- H1、H2 标签
- 粗体、斜体和下划线
以上都是通过document.execCommand
并且工作正常。我的问题是检查onmousedown
/up
焦点区域是否有父标签(一个或多个)。
我已经设法编写了一个函数,如果存在特定标签,它将检查和更新我的编辑器的 CSS。但这并不能解释多个标签,我相信一定有一种简单的方法可以做到这一点,而我忽略了一些东西。
到目前为止我的代码(目前只寻找一个标签):
document.onmousedown = triggerTextSelection;
document.onmouseup = function (event) {
setTimeout(function () {
check(event);
}, 1);
};
function check() {
// The same applies for Bold,Italic,Underline etc...
if (hasParentWithTag(getFocusNode(), 'blockquote')) {
$('.quote-btn').addClass('btn-active');
} else {
$('.quote-btn').removeClass('btn-active');
}
}
function getFocusNode() {
return document.getSelection().focusNode;
}
function hasParentWithTag(node, nodeType) {
while (node.parentNode) {
if (node.nodeName.toLowerCase() === nodeType) {
return true;
}
node = node.parentNode;
}
return false;
}
任何帮助或指导表示赞赏。