在Firefox中全选(ctrl + a)和document.execCommand问题

时间:2018-10-18 14:59:31

标签: javascript html execcommand

我有一个功能区元素,其文本是可编辑的。它可以正常工作,直到您按ctrl + a或在内部单击三次以选择Firefox中的所有文本。 document.execCommand在Firefox中无法使用,控制台出现[Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: debugger eval code :: <TOP_LEVEL> :: line 1" data: no]错误。

要重现该问题,请运行以下代码,在元素中选择整个文本(单击文本并按ctrl + a),然后在浏览器控制台中运行document.execCommand('italic');

        <div style="position: absolute; top: 89px; left: 41px; z-index: 6;">
          <font contenteditable="true" style="
              float: left;
              background: #a64ba5;
              vertical-align: top;
              color: #fff;
              font-weight: bold;
              font-size: 12px;
              padding-left:10px;
              padding-top:14px;
              padding-bottom:14px;
              ">Some text</font> 
          <span class="right" style="
              position: absolute;
              content: '';
              border: 20px solid #a64ba5;
              border-left-width: 10px;
              border-right-color: transparent;"></span>
        </div>

有人对这个问题有任何想法/解决办法吗?

1 个答案:

答案 0 :(得分:0)

我使用div标签而不是字体解决了该问题。这解决了Firefox中的问题,这似乎是Firefox错误。另一种选择是将contenteditable属性放置到父元素,但是当您使用ctrl + a和Backspace时,这会破坏元素。