webkit stylewithcss contenteditable不工作?

Mar*_*ark 5 javascript jquery wysiwyg webkit contenteditable

我正在尝试使用contenteditable和styleWithCss.

它似乎不适用于webkit.

无论何时我使用execCommand,它都会产生一个<b>而不是我期望的范围.

这是一个演示:http: //jsbin.com/izomo/2/edit

选择部分文本,单击粗体按钮,然后查看html输出.

这是一个错误还是我做错了什么.

非常感谢你.

unn*_*nni 10

我无法在这里的答案中使用这些命令.对于那些仍在讨论这个问题的人来说,这就是如何让它发挥作用.

我们可以将三个值传递给execCommand

document.execCommand( command, uiElement, value ) 
Run Code Online (Sandbox Code Playgroud)

正如Christopher的优秀答案详细说明,"styleWithCSS"的值默认设置为false,只需尝试:

alert(document.queryCommandState("styleWithCss"));
Run Code Online (Sandbox Code Playgroud)

要将其设置为true,您需要将第三个参数"value"传递为true.像这样:

document.execCommand("styleWithCSS", null, true);
Run Code Online (Sandbox Code Playgroud)

这适用于Firefox和Chrome


Chr*_*ker 5

似乎一切都按预期工作。请参阅WebKit BugZilla 上的错误 13490

编辑: 2009 年 2 月 3 日,在变更集40560 中的 WebKit 源中添加了对 styleWithCSS 的支持。

也就是说,似乎从那时起,无论如何,styleWithCSS始终设置为false,而在更改之前,样式命令始终与 CSS 一起应用,好像styleWithCSS存在但始终设置为true

document.execCommand根据Mozilla 文档,我什至尝试按如下方式重写您的行:

document.execCommand("styleWithCSS", true, null);
document.execCommand("bold", false, null);
Run Code Online (Sandbox Code Playgroud)

这些修改后的命令在 Firefox 中仍然有效,但不适用于 Chrome 5 或 Safari 5(在 Windows 上和今天已安装)。

因此,这似乎是一个 WebKit 错误。

  • 第三个参数是你想要的命令值。对于`StyleWithCSS`,你需要一个布尔值的第三个参数。第二个参数几乎总是无关紧要的,可以是“false”。因此`document.execCommand("styleWithCSS", false, true);` (4认同)