富文本编辑器,使用强标记的粗体文本

时间:2013-02-17 12:47:10

标签: javascript contenteditable execcommand

我正在开发一个非常简单的富文本编辑器。我已经阅读过使用应用于iframe的designMode ='On',然后我用它来创建粗体文本:

nameOfiframe.document.execCommand('bold',false,null);

尽管它有效,但execCommand()使用b标签代替strong来制作粗体文字。我看了一些高级富文本编辑器,所有这些编辑器都使用了strong而不是b标记。

我有一个简单的方法来解决这个问题吗?或者execCommand()根本不好用?

谢谢!

2 个答案:

答案 0 :(得分:4)

不幸的是,document.execCommand()行为因浏览器而异。正如@ 1UnitedPower的回答所提到的那样,document.execCommand()旨在用于表达而不是语义效果。

两种可能的选择是:

  1. 编写自己的代码以进行大胆的样式设置。不幸的是,正确地做到这一点并非易事。您可以看看CKEditor和TinyMCE等主要的所见即所得编辑如何做到这一点。
  2. 在调用<b>后,运行一些代码将<strong>元素转换为document.execCommand()元素。这似乎是更容易的选择。如果这对您来说很重要,那么在进行转换时,您需要一些方法来保留选择。

答案 1 :(得分:0)

execCommand不接受html-tag-name作为其第一个参数,而是接受MIDAS命令。 有关可用命令的列表,请参阅https://developer.mozilla.org/en-US/docs/Midas

希望这种行为,因为它针对的是一个所见即所得的目标。 WYSIWYG不是用于语义,而是用于文体目的。您无法确定粗体文本背后的语义。

但请查看insertHtmlstyleWithCSS命令。