我正在尝试实现浏览器提供的富文本编辑器。这是Mozilla的参考: https://developer.mozilla.org/en/rich-text_editing_in_mozilla
之前我已经完成了这项工作,它适用于IE / Chrome / Firefox,虽然可能有一些错误。
无论如何我设置了contenteditable = true(通过javascript),现在剩下要做的就是将按钮点击(对于“Bold”,“Italic”等格式化)绑定到document.execCommand()调用。我正在使用jQuery bind()方法。
但是当我调用这个函数时没有发生任何事情,例如: document.execCommand('bold',false,null);
调用click回调函数,但只是忽略了document.execCommand()。它没有发出任何错误。但是,如果我选择文本,并从Javascript控制台运行相同的命令,无论是在Chrome还是Firefox,它都可以!文字变得粗体......
那么它如何在控制台中运行但不在我的代码中呢?背景差异是什么?
由于
PS:我使用HTML“A”标签来表示格式按钮(粗体,斜体等)。一旦我用BUTTON标签替换它,它就起作用......对我来说没有多大意义......
答案 0 :(得分:1)
听起来像是两个潜在问题中的一个:
在执行document.execCommand()
调用之前,选择将丢失。正如您已经观察到的那样,使用按钮而不是链接将解决此问题。另一种选择是store the selection before the selection is lost and restore it before the document.execCommand()
call。或using the unselectable
attribute可能有用。
另一个可能的问题是您使用了错误的document
对象:您需要iframe的文档,而不是主文档中的文档。