0

次のコードを使用して、フォントを変更して contenteditable div のテキストを編集しています。定型化されたドロップダウン メニューである div をクリックすると、選択がクロムで消えます。Firefox、Opera、さらには IE でも問題なく動作します。

Rangy は、処理する選択されたテキストを見つけられません。なぜだろう!

注:「クリック」の代わりに「マウスオーバー」を使用すると問題なく動作します

DropDown.prototype = {
    initEvents : function() {
        var obj = this;

        obj.dt.on('click', function(event){
            $(this).toggleClass('active');
            if (savedSel) {
                rangy.removeMarkers(savedSel);
            }
            savedSel = rangy.saveSelection();
            savedSelActiveElement = document.activeElement;
            return false;
        });

    }
}
4

2 に答える 2

3

mousedown回避策の 1 つは、イベントではなくイベントを使用してclick、デフォルトの動作を防止することです。

obj.dt.mousedown(function(event){
    event.preventDefault();
    $(this).toggleClass('active');
    if (savedSel) {
        rangy.removeMarkers(savedSel);
    }
    savedSel = rangy.saveSelection();
    savedSelActiveElement = document.activeElement;
    return false;
});

デモ: http://jsfiddle.net/NJuMK/1/

于 2013-03-11T10:14:12.697 に答える
0

クリックが発生する前に、選択データを保存する必要があります。たとえば、マウスオーバーで保存し、ユーザーがクリックしたときに使用します。

于 2013-03-10T11:11:42.390 に答える