我当前的项目涉及使用文档编辑器,无论好坏,它都是使用 mshtml 实现的,并将 contentEditable 设置为 true。我们当然正在考虑用其他东西替换这个设置,但目前假设它不是一个选项。
万一这很重要,我们正在使用 VS 2008 (.Net 3.5) 和 C# 执行此操作:
document = (HtmlDocument)this.editorWebBrowser.Document;
body = (HtmlBody)document.body;
body.contentEditable = true;
我们希望将大部分结构编辑隐藏在 UI 后面,但让用户以任何他们喜欢的方式编辑文本。当我们添加具有多种样式中的任何一种的 div 时,就会出现问题:
(添加一个 body 标记来模拟我们正在以编程方式执行的操作,因此您可以在 IE 中进行测试,但请记住我们正在使用 C#/.Net/VS。)
<BODY contentEditable="true">
<DIV class="intro" style="border: 1px solid blue; width=100%;">
<P>My Intro</P>
</DIV>
<P>Other Text</P>
</BODY>
这有两个问题:
- 用户的第一次点击选择了 div。我们希望点击直接转到文本,并且永远不要让用户看到调整大小的句柄。
- 如果用户将光标放在 Other Text 中,然后尝试使用键盘移动到 div 文本,则会被阻止。当您在它之外四处移动时,该 div 被视为一个字符。
那么,有效地,有没有办法让 div 表现得像一个背景装饰,但它周围的一切仍然是可编辑的?这个 html 是完全内部的,所以我们可以用它做任何我们喜欢的事情。所以 div 本身并不重要。重要的是我们:
- 包含多个 P 或其他标签
- 直观地向用户展示所有包含的 P 或其他标签都是一组的一部分,就像当前 div 上的边框和背景颜色这样的样式现在完成了。
这个 SO 问题让我担心我们目前的设置无法实现我想要的,但我要求帮助其他遇到类似问题的人。稍后我将添加一些我们提出的不完美的解决方案。
可能与否,感谢您的任何想法。