getSelection在Firefox与Chrome中返回不同的对象

时间:2015-04-17 20:51:23

标签: javascript html google-chrome firefox getselection

对于可编辑标签,我遇到了Firefox v37的问题。这在Chrome v41和IE v11中运行良好。我正在寻找可能的解决方法,因为我不希望很快就能纠正这个问题。我不关心IE;对我来说这很奇怪,但是它不起作用。

有两个问题只发生在FF中。

1)选择标签允许您输入文本,但FF将文本放在最高的可信节点中。这会破坏格式化文本的能力,除非它完全相同。单个标签内的所有文本不一定具有相同的格式。

2)在onclick和onmousedown中,FF返回具有不正确偏移量的最高可信节点。这使我无法知道标签内部的插入符号。 Chrome和IE都返回文本对象(或至少是文本对象的父对象)并在对象内部更正偏移量。

JSFiddle示例:https://jsfiddle.net/ktc8azf2/

HTML

<div id="example">
    <label contenteditable="true" onmousedown="console.log(window.getSelection());">
        <p style="font-style: italic;"></p>
    </label>
</div>

CSS

#example [contenteditable="true"]:not(:focus) :not(span):only-child:empty::before {
    content: "<Type Label Here>";
}

0 个答案:

没有答案