【问题标题】:Definition of ExecCommand function for bold?为粗体定义 ExecCommand 函数?
【发布时间】:2012-08-28 11:40:22
【问题描述】:

ExecCommand 提供了一种将 iFrame 中的文本加粗、斜体、下划线等方式。

但它缺少创建<cite><strong><em> 的选项(有formatBlock,但仅适用于块元素而不是内联元素)。

我想使用 ExecCommand 函数来创建 <cite> - 有什么方法可以实现吗?显然,我想保持完美的解析,就像 bold 一样,而不是像 surroundContents 这样的东西,当你在同一个选择中使用它两次时会失败。

我正在寻找 ExecCommand 粗体命令的定义或使用现有命令完美添加 <cite> 的方法。有什么建议么?我无法从浏览器的功能中提取它。当我尝试这样做时,它会显示“本机代码”。

【问题讨论】:

    标签: javascript contenteditable execcommand


    【解决方案1】:

    我看到在之前的 cmets 中提到了 CKEditor :) 所以这就是我们处理执行命令的方式:

    • 我们一切都是手动完成的。正如您所看到的,DOM API 是不够的,并且浏览器之间的实现有所不同,所以我猜(但我没有检查过)在一个浏览器中包含一些具有应用样式的文本的 HTML 在其他浏览器中不起作用(因为应用了一个浏览器strong 和第二个 bspan 具有内联样式)。
    • 首先,我们需要自定义RangeSelection 实现。你不能使用它们,但有一个很酷的 Rangy lib。
    • 您需要的下一个组件是一组用于应用、删除和检查样式的方法。这是our impl
    • 最后一个组件很简单 - custom commands,因为它可以方便地模仿 W3C 的 API 和想法。

    【讨论】:

    • 太棒了!谢谢 :) 我已经有了正在工作的编辑器,但是我也很感兴趣将bold 统一为始终使用strongb 的方法。有很多代码需要检查,互联网上ExecCommand 的信息不多。感谢您创建开源软件 :)
    【解决方案2】:

    我在一年前研究了这个问题,除了在嵌套标签上使用正则表达式而不是 EC 之外找不到任何解决方案。我在不使用 ExecCommand 的情况下开发了我的文本编辑器。

    【讨论】:

    • 我现在正面临这个问题。粗体等效果很好,但添加所有相似的 HTML 标记会很酷。您是否设法在编辑器中创建<cite>?您是如何使用正则表达式的(如果它不是秘密或受版权保护的作品)?
    • 它有版权,但我可以建议你挖掘 CKEditor 的文件。
    • 谢谢 :) 我会的。我已经检查了 YUI 富文本编辑器的代码,但调查这需要几天时间。它们创建特定于浏览器的代码并包含大量异常。在可能的情况下,我更喜欢现成的解决方案。再次感谢!!
    猜你喜欢
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2022-11-03
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多