Python / Javascript:WYSIWYG html编辑器 - 快速处理大型文档和/或设计理论

时间:2011-12-07 08:17:47

标签: python html wysiwyg

背景:

我正在用python编写电子书编辑程序。目前它使用源代码视图进行编辑,我想将其移植到一个所见即所得的视图进行编辑。我能为python找到的最好的(唯一?)html渲染器是webkit(我使用的是PyQt版本)。

问题:

如何完成所见即所得的编辑?要求/问题如下:

  1. 电子书最多可达10,000段/ 1,000,000 字符。
    • PyQt Webkit(ContentEditable):没问题。
    • PyQt Webkit(TinyMce等):永远 打开它们!
  2. 格式为<body><p>...</p><p>...</p>...</body>。 body元素只包含 段落,没有div等(但在段落中可能有跨度,链接等)。就用户而言,编辑必须在没有明显延迟的情况下进行。
    • PyQt Webkit(ContentEditable):如果您尝试删除多个段落中的文本,则需要永远!我的理解是,这是因为它重置了被更改元素的共同父项 - 即整个正文元素,因为正在删除/合并两个不同的段落。但是,应该没有必要 - 它只需要删除/合并/更改那些单独的段落!
  3. 我愿意实现我自己的所见即所得编辑,但对于我的生活,我无法弄清楚如何正确删除/剪切/粘贴/合并/更改html代码。我在网上搜索了关于html wysiwyg设计理论的文章,​​然后干了。

    谢谢!

1 个答案:

答案 0 :(得分:1)

我可以建议另一种方法吗?由于您的电子书只有<p></p>

  • 拆分<p></p>上的文字以获取所有段落的索引数组
  • 创建自己的分页系统,并在屏幕上填充N段,自动从索引数组中显示足够的文本
  • 当您进行选择时,您可以使用[段落中的段落索引+字符索引]来选择开始/结束
  • 然后根据假设实现剪切/复制/粘贴/删除/撤消/重做。

(注意:当您进行选择时,由于保存了起点,您可以安全地更改屏幕/分页上的文本,直到选择结束。)