6

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

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

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

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

谢谢!

4

2 回答 2

4

不幸的是document.execCommand(),行为因浏览器而异。正如@1UnitedPower 的回答所提到的,document.execCommand()它是为了呈现而不是语义效果。

两种可能的选择是:

  1. 编写自己的代码来做粗体样式。不幸的是,正确地做到这一点并非易事。你可以看看主要的所见即所得编辑器,如 CKEditor 和 TinyMCE 是如何做到的。
  2. 调用后运行一些代码将<b>元素转换为元素。这似乎是更容易的选择。如果这对您很重要,您将需要一些方法来在进行转换时保留选择。<strong>document.execCommand()
于 2013-02-17T20:47:56.020 回答
0

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

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

但是看看insertHtmlstyleWithCSS命令。

于 2013-02-17T12:58:37.093 回答