3

HTMLエディタを使用してコンテンツを編集しています。次に、非常に特殊な種類の要素(特殊なクラスの画像)が削除されないようにする必要があります。

BACKSPACE、DELETE、CTRL + X / CMD + Xを使用した、折りたたまれていない選択/範囲の使用例については、解決策を見つけましたが、選択/範囲が折りたたまれておらず、次のBackspaceは、私の特別な画像の1つを削除します。

次のBackspace/Deleteがそれらのimgタグの1つを削除するかどうかをどのように検出できますか?

例:CARETは、キャレット/カーソルの位置をマークします。次にBackspaceキーを押すと、画像が削除されます。このケースをどのように検出できますか?

<p>Some Text <b>here <img class="my class" src="..."/></b>CARET some text</p>
4

2 に答える 2

1

カレットが画像の横にあるかどうかを確認する場合については、同様の質問に対する私の回答を次に示します。IE <9のサポートはRangyに依存していますが、Rangyに依存しないようにすることもできます。

答えはバックスペースのみを考慮していますがDelete、同様に機能するように簡単に適応させることができます。

https://stackoverflow.com/a/10020476/96100

于 2012-04-24T14:32:08.637 に答える
1

onkeyup以下のコードは(and ) でキャレットの周りの要素を検出します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;
}
于 2012-04-26T09:31:27.670 に答える