Javascript 如何在html编辑器中确定img标记是否位于插入符号节点的左侧?

Javascript 如何在html编辑器中确定img标记是否位于插入符号节点的左侧?,javascript,jquery,html,dom,html-editor,Javascript,Jquery,Html,Dom,Html Editor,我正在使用html编辑器编辑内容。现在我需要确保一种非常特殊的元素不会被删除(带有特殊类的图像) 对于带有退格、删除、CTRL+X/CMD+X的未折叠选择/范围的用例,我找到了一个解决方案,但我仍在寻找一个解决方案,以解决选择/范围未折叠且下一个退格将删除我的一个特殊图像的情况 如何检测下一次退格/删除是否会删除其中一个img标签? 示例:插入符号标记插入符号/光标位置。如果下一步按Backspace,图像将被删除。我怎样才能发现这个病例 <p>Some Text <b>

我正在使用html编辑器编辑内容。现在我需要确保一种非常特殊的元素不会被删除(带有特殊类的图像)

对于带有退格、删除、CTRL+X/CMD+X的未折叠选择/范围的用例,我找到了一个解决方案,但我仍在寻找一个解决方案,以解决选择/范围未折叠且下一个退格将删除我的一个特殊图像的情况

如何检测下一次退格/删除是否会删除其中一个img标签?

示例:插入符号标记插入符号/光标位置。如果下一步按Backspace,图像将被删除。我怎样才能发现这个病例

<p>Some Text <b>here <img class="my class" src="..."/></b>CARET some text</p>
此处的一些文本插入一些文本


关于检查插入符号是否在图像旁边的问题,下面是我对类似问题的回答。它依赖Rangy获得IE<9的支持,但可以简单地使其不依赖Rangy

答案只考虑了退格,但也可以很容易地适用于Delete


下面的代码使用
onkeyup
(和
onselectionchange
)检测插入符号周围的元素,但它仅用于IE。也许它可以“翻译”成jQuery

function detectClass(){
    var range, parentR, parentL;
    range = document.selection.createRange();
    range.moveStart('character',1);
    range.moveEnd('character',1);
    parentR = range.parentElement();
    range.moveStart('character',-2);
    range.moveEnd('character',-2);
    parentL = range.parentElement();
    if (parentR.className == 'special'){/* special on right */}
    if (parentL.className == 'special'){/* special on left */}
    return;
}

您似乎要处理两种情况:插入符号位于图像右侧时,以及选择非空时。你对两者都感兴趣吗?不,我有一个非空选择的工作解决方案。问题是,当插入符号位于图像的左/右位置时,Backspace/Delete可能会被推上。嗯,我不知道该怎么办,甚至可能有多个img标签。你能更清楚地描述一下需要做什么吗?@Thariama:我稍后会仔细看。顺便说一句,您可能无法在所有情况下防止图像被删除:某些浏览器在编辑和上下文菜单上都有删除选项,您无法在为时已晚之前检测到这些选项。我知道一些特殊情况,当我无法检测到任何内容时(使用上下文菜单删除和剪切),但幸运的是,在这种情况下,我可以责怪用户:)我无法让它工作-你能仔细看看吗?@Thariama:对不起,我真的打算做点什么,但我在争取时间,一直忘记。也许在周末。