我正在尝试构建一个类似于Google文档的文字处理器网络应用。我已经开始使用Mercury Editor(依赖于contentEditable属性)并且我创建了一个可编辑的div元素,看起来像纸质页面(就像Google Docs那样)。
现在最大的问题是如何处理多个页面,即如何检测文本(或其他内容)何时溢出页面高度,然后使用内容拆分创建新页面。有几种情况可能会出现这种情况:
我试图深入研究Google Docs JS代码,但由于它已被压缩,因此无法遵循。有一个standalone version of Google Docs,代码已经美化,但它已经过时,并且不能处理多个页面。
任何有关如何实现这一目标的提示都将受到赞赏。
答案 0 :(得分:0)
如果您的容器具有固定大小,则可以使用overflow事件来检测它。
window.addEventListener ("overflow", yourFunction, false);
答案 1 :(得分:0)
基本上你需要两个div,比如这个
<div id='pageWrapper'>
<div id='page' style='max-height: 600px; overflow: hidden;'>
</div>
</div>
所有#pageWrapper都会坐在那里看起来像一个页面,有人添加的所有内容都会添加到#page中。每当有人添加内容时,无论是通过粘贴还是键入检查#page的scrollHeight与其offsetHeight。如果scrollHeight较大,则会溢出页面,您可以开始将内容(逐个字或逐个元素)移动到下一页,直到scrollHeight再次等于offsetHeight。
如果用户插入分页符,只需将#page的高度设置为分页符所在的位置,以便之后的任何内容都会溢出页面。这对于大型文档来说会变得棘手,因为如果有人溢出第1页,则必须调整内容直到页面为止,但我想这就是Google Docs没有页面的原因。