1

我正在开发所见即所得的编辑器。因为它必须只包含一些基本功能,所以我想自己做并避免出现问题。现在它工作得很好,但我想添加一个功能以取消粗体,单元格......

我知道使用 execCommand 它是一个自动的事情,但它在所有浏览器中的工作方式不同,所以......我的想法是下一个:按下 BOLD 按钮时,检查字符串的环境,然后......

  • 如果选择在打开和关闭<b>标签之间,例如<b>ab||selected||cd</b>替换selected</b>selected<b>.
  • <b>如果选择以标签开始或结束,例如<b>ab||selected||</b>将其替换为</b>selected<b>(然后删除所有<b></b>组。)
  • <b>如果选择以标签开始和结束,例如<b>||selected||</b>将其替换为</b>selected<b>(然后删除所有<b></b>组。)

<b>content</b>但是......当只有插入符号/选择 IN 时,我怎样才能进入 var字符串content?或许有可能...

更新
奇怪的是替换总是相同的。那么,我真的应该得到我想要的东西,还是总是以这种方式替换它?

4

1 回答 1

1

我正在开发所见即所得的编辑器。因为它必须只包含一些基本功能,所以我想自己做并避免出现问题。现在它工作得很好,但我想添加一个功能以取消粗体,单元格......

不要编写自己的所见即所得编辑器。

你真的想“避免问题”吗?然后使用现有的优秀编辑器之一(实际上只有 2 个......也许 3 个)。创建编辑器是一项极其艰巨的任务,您需要大量时间(我的意思是……几年)、大量知识和耐心(也需要很多:P)。

我可以自己写“我正在使用所见即所得的编辑器”。在一年多的时间里,我是这些“优秀编辑器”之一的核心开发人员。在此期间,我只实现了一个功能 - 非常重要且非常复杂,但只是其中之一。

你有那个问题......我什至不想开始回答。这听起来像是小菜一碟,但事实并非如此。这是一块砖头,当你摔倒在你头上时会杀死你:)。我只会开始列举 impl 的重要部分:Selection + range 实现,因为原生不同并且有缺陷(约 5k LOC + min Nk LOC 用于测试)。然后您需要正确的样式处理(应用和删除)impl(最少 1k LOC + 测试),因为您必须注意跨越许多块的样式(如整个表格加粗)以及包含部分或整个样式等的不同选择。您必须避免使用本机 execCommand,因为它们会破坏您的内容。然后您还应该考虑更新工具栏按钮的状态,并且为了使您的 impl 防弹,处理不同的样式标签(例如粘贴)。然后' 这只是冰山一角——你会处理样式,但有数百个其他东西坏了。大编辑已经解决的问题。

无论如何 - 了解主要编辑器之一的配置选项并根据需要对其进行自定义。这将花费您几个小时,而不是几年。

于 2012-07-05T08:14:38.460 回答