javascript - 为什么单击 div 时选择会消失?

标签 javascript jquery google-chrome selection rangy

我使用以下代码通过更改字体来编辑 contenteditable div 中的文本。当单击一个样式化的下拉菜单 div 时,选择会在 chrome 中消失。它在 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;
        });

    }
}

最佳答案

一种解决方法是使用 mousedown 事件而不是 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/

关于javascript - 为什么单击 div 时选择会消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321157/

相关文章:

javascript - 当我需要不同的操作时,我应该如何使这段代码变干?

javascript - 需要找出需要为 Tensorflowjs 转换器传递哪些输出节点名称

javascript - 如何将 Knockout.js 绑定(bind)到现有的表格网格?

jquery - 调整 css Sprite 的大小

javascript - div contenteditable,XSS

javascript - 值属性类型自动类型转换

javascript - 获取 jQuery get().done() 函数的返回值

javascript - 如何创建格式化的 javascript 控制台日志消息

linux - 谷歌浏览器在启动时崩溃,操作码无效

CSS 用 :checked not working 链接相邻兄弟