【发布时间】:2026-01-21 06:25:01
【问题描述】:
我制作了自己的 WYSIWYG 文本编辑器。
contenteditable-field 是一个 div,见下面的代码:
<div spellcheck="false" id="textEditorField" contenteditable="true"></div>
按钮事件如下所示:
boldButton.onclick = function() {
document.execCommand('bold', false, null);
return false;
}
文本编辑器工作正常。斜体和非斜体文本,强调作品。 但是粗体有一个问题:它加粗了文本,但没有取消粗体。这在 OS X 和 Windows 上的每个浏览器中都有。
我正在使用通过@font-face 导入的自定义字体。
在 css 中我执行以下操作:
b {
font-family: "Caviar Dreams Bold";
font-weight: normal;
}
b i, i b {
font-family: "Caviar Dreams Bold Italic";
font-weight: normal;
}
如果我删除 font-weight 属性,文本将获得字体系列“Caviar Dreams Bold”,并且通过 CSS 使其变为粗体,因此格外粗体。
有一些类似的问题,但没有我可以使用的答案。我还必须注意,我不能为此使用 jQuery。
【问题讨论】:
-
看起来像 JavaScript 问题。检查您的 DOM 并查看 是否真的被删除了。如果您需要灵感,我自己在这里创建了一个简单的编辑器github.com/NenadP/biu-editor :)
-
它看起来像是被删除并立即再次添加。因为在 web-inspector 中它有
<b></b>。如果我展开此标签,然后尝试取消加粗文本,标签会再次折叠。 -
这不是一般问题,它是您代码中的特定问题。提供一些 jsfiddle 或 codepen。
-
最后我让 JSFiddle 工作了,幸运的是这里也存在问题(否则我猜它会更难解决)。这里是jsfiddle.net/ume3t0vp
-
好的,我明白了问题所在。将在几分钟后发布我的答案。
标签: javascript html css execcommand