我需要创建一个简单的富文本编辑器,使用任意标记来表示特殊文本样式(例如:
因此,在创建一个基本的富文本编辑器时,我遇到了三种方法:
第一种方法和第二种方法使用
第一种选择使用标准的
第二种选择使用包含在
第三种选择使用覆盖在
[b]...[/b]
表示粗体,[i]...[/i]
表示斜体),并将其内容保存到XML文件中。所有后端PHP相关的东西似乎都很简单,但前端所需的所见即所得(WYSIWYG)部分似乎更加复杂。我一直不愿使用当前可用的基于JavaScript的所见即所得编辑器之一,因为我想要允许的富文本选项非常有限,而这些应用程序是如此完整,以至于将它们剥离到我需要的功能几乎就像是更多的工作。因此,在创建一个基本的富文本编辑器时,我遇到了三种方法:
第一种方法和第二种方法使用
contentEditable
或designMode
属性创建可编辑元素,并使用execCommand()
方法将新的文本样式应用于所选范围。第一种选择使用标准的
div
元素,在该元素的内容上执行所有样式命令。第二种选择使用包含在
iframe
中的窗口的可编辑body
,然后将从父文档中启动的任何样式命令传递到其contentWindow
中,以更改所包含的body中的所选范围。这似乎是为了实现与第一种方法相同的效果而采取的几个额外步骤,但我认为将可编辑内容隔离到自己的文档中具有优势。第三种选择使用覆盖在
div
上的textarea
,并使用oninput
JS事件将背景div的innerHTML
更新为匹配输入textarea的value
(每当它发生变化)。显然,这需要进行一些字符串操作,以将
[b]...[/b]
还是<b>...</b>
? - user123444555621<b>
这样的元素它并不能节省太多空间,但有一些样式约定会转化为更长和更复杂的HTML,我希望用任意标记来缩写它们。尽管所有内容都将被包含在CDATA
标记中,但我仍希望尽可能地避免干扰XML的字符。 - Aaron</[];>
时往往会感到惊恐。 - Aaron