Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 富文本编辑器,使用强标记的粗体文本_Javascript_Contenteditable_Execcommand - Fatal编程技术网

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

Javascript 富文本编辑器,使用强标记的粗体文本,javascript,contenteditable,execcommand,Javascript,Contenteditable,Execcommand,我正在开发一个非常简单的富文本编辑器。我已经了解了如何将designMode='On'应用于iframe,然后我使用它来创建粗体文本: nameOfiframe.document.execCommand('bold',false,null); 即使它可以工作,execCommand()也使用b标记而不是strong来生成粗体文本。我查看了一些高级富文本编辑器,它们都使用了strong而不是b标记 有没有一个简单的方法可以帮我解决这个问题?或者execCommand()根本不适合使用 谢谢 ex

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

nameOfiframe.document.execCommand('bold',false,null);
即使它可以工作,execCommand()也使用
b
标记而不是
strong
来生成粗体文本。我查看了一些高级富文本编辑器,它们都使用了
strong
而不是
b
标记

有没有一个简单的方法可以帮我解决这个问题?或者execCommand()根本不适合使用


谢谢

execCommand
不接受html标记名作为其第一个参数,而是接受MIDAS命令。 有关可用命令的列表,请参见

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


不过,请看一下
insertHtml
styleWithCSS
命令。

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

两种可能的选择是:

  • 编写自己的代码来进行粗体样式设计。不幸的是,正确地做到这一点并非小事。您可以看看主要的WYSIWYG编辑器(如CKEditor和TinyMCE)是如何做到这一点的
  • 调用
    document.execCommand()
    后,运行一些代码将
    元素转换为
    元素。这似乎是更容易的选择。如果这对您很重要,那么在进行转换时,您需要某种方法来保留选择

  • execCommand()在不同浏览器中的工作方式不同:FF创建
    B
    标记,而
    execCommand()
    正是创建自定义RTE的目的。@roXon如果您确信这一点,也许您可以通过在该页面上提交注释来让他们知道这一点。重复问题。。。?ATC的回答()似乎提供了一个可能的解决方案。@Stefan,不,我说错了,现在在Chrome中测试,它创建了与FF相同的
    B
    标记,而IE(8,9)创建了
    。不管他们以何种方式声明创建了
    元素,现在已经不是这种情况了。