【发布时间】:2023-03-13 14:14:01
【问题描述】:
我有一个contentEditable <div>,我正在把它变成一个非常简单的文本编辑器。当按下“tab”时,使用document.execCommand('insertUnorderedList'); 创建一个项目符号点,效果很好。但问题是:
HTML:
<div id="wysiwyg">
</div>
CSS:
#wysiwyg{
font-family: "Gill Sans", "Gill Sans MT", Calibri, sans-serif;
font-weight: normal;
font-size: 0.9em;
color: rgb(70,70,70);
}
#wysiwyg ul li {
font-family: 'Calendas Regular', serif !important;
font-size: 1em;
}
当我使用 document.execCommand('insertUnorderedList'); 创建一个项目符号点时,它的样式就好像它只是我的 #wysiwyg 中的任何旧文本,而不是好像它是一个项目符号点,但是如果我插入一些初始文本 (通过 HTML,而不是通过使用 #wysiwyg 中的 contentEditable-ness),它会正确设置项目符号的样式。
有什么想法吗?
谢谢
【问题讨论】:
-
我在 Safari 上测试这个,由于某种原因,浏览器在
- 中插入了一个 标记,这似乎干扰了样式表。然而,它像往常一样在轻 DOM 中创建
- 和
- 。 Example
- 中插入了一个 标记,这似乎干扰了样式表。然而,它像往常一样在轻 DOM 中创建
-
@NicolasMcCurdy 是的,当我使用网络检查器查看 DOM 如何随新的 contentEditable 内容发生变化时,我也注意到了这一点......关于如何停止这个新的 标签的任何想法?或者至少改变使用它来设置正确的字体?
-
不幸的是,这似乎是由基于 WebKit 的浏览器中的错误引起的(请参阅this answer)。我试过 Safari、Chrome 和 Firefox,问题只出现在 Chrome 和 Firefox 上。不幸的是,除了不添加样式、等待修复或删除额外的 HTML 之外,您无能为力。如果您想删除多余的 HTML,您可能会发现 Working around Chrome's contenteditable span bug 很有帮助。
-
谢谢@NicolasMcCurdy,这太完美了。如果您将其发布为答案,那么我很乐意接受它:)
标签: javascript jquery html css