0

在我的上一篇文章: Finding Touched elments CKEDITOR中,我正在寻找被触动的元素。那篇文章的答案运行良好。

但现在我遇到了另一个问题。当插入符号设置为标签/块的前面或末尾时。我只能看到父级是跨度。但可能是用户试图将插入符号放在标签之外。例子:

this ^<span>^test</span> text 

插入符号可以设置为两个“^”,而不会看到任何区别。

(单选(startContainer == endContainer))

上一篇文章中的 anwser 确实会检测到跨度是否位于标签之外。但只是在标签内部,它不会检测到哪个给出了新场景。我需要一种方法来避免新场景并让它像触摸块一样处理。

我想检测插入符号是否在跨度内并触摸开始。结尾也一样,只有这样它才会触及结尾。函数 range.checkStartOfBlock 返回 false,这不是解决方案。

4

1 回答 1

0

我找到了 Mozilla 的修复程序,现在我也想要 IE7 及更高版本的修复程序。

Mozilla 修复:开始检查:

range.startOffset === 0 //Means StartOfBlock

检查结束:

range.endOffset === range.startContainer.getText().length //Means EndOfBlock

==== 编辑 ====

来自 rangy.googlecode.com 的 rangy range 库提供了一个可接受的解决方案。(提供了某种兼容的 startOffset 和一些其他功能。)我需要对 Internet Explorer 进行大约 3 次检查,而对于 Mozilla 只需要 1 次检查。但它似乎是万无一失的。

仍然非常欢迎所有想法。

于 2013-03-04T14:54:08.457 回答