我想使用选择和范围对象编写基于JavaScript的标记编辑器(所见即所得)。到目前为止,我没有任何问题来访问这些对象。使用选择和范围对象的JavaScript标记编辑器
我的问题在这里开始:
使用范围对象,我可以访问它的属性startContainer /开始偏移和EndContainer/Endoffset。这意味着我得到关于我的选择开始的节点的信息,包括内部位置和关于选择结束的相同信息。
据我所知,JavaScript自动添加开始或结束标签,以防我的选择破坏现有的树结构。
如果我现在要添加一些标记,我该如何处理这些破碎的结构?
例子:
This <i>is my</i><b>sample</b> text.
现在,我想强调的部分“我的样本”
,这意味着这样的事情,必须构建出“我的样本”的选择:
This <i>is <u>my</u></i><b><u>sample</u></b> text.
但是,既然我没有注意到树状结构的破坏,我该怎么做?我如何确保有效的标记?
我也在考虑处理整个字符串,但我不知道字母/文本的全局位置,而只是关于它们在特定节点中的位置。
我希望这个问题很清楚,我对它的一般形式表示歉意。但我真的为这件事疯狂......
非常感谢您的回答。我不关心IE的兼容性,但我担心,我将不得不采取非平凡的方式......我需要一种可能性来插入任意类的跨度。有没有可以激励我的现有编辑?或者算法存在于某个地方? – Tobi
@Tobi:看看Rangy中的CSS class applier模块:http://code.google.com/p/rangy/wiki/CSSClassApplierModule –
会这样做,thx! – Tobi