"styleWithCSS" 有没有 IE11/Edge 的替代品?

Any replacement for "styleWithCSS" for IE11/Edge?

我知道有两篇关于此的帖子,但一篇不是我要找的,另一篇 one 是,但它已有 7 年历史了。也许现在有已知的方法。

我正在使用 Summernote.js 编辑器,并且在内部,每当您想要将文本向左、居中或向右对齐时,它都会执行 document.execCommand('command', false, value)。 问题是对于 Firefox 和 IE/Edge,这与在 WebKit 中的工作方式不同。每个浏览器都有自己的行为方式。 Chrome 添加与 "text-align: direction"、Firefox 内联的样式,IE/Edge 添加名为 "align='direction'".

的属性

经过一些调查,我发现你可以使用命令"styleWithCSS"来转换那些已弃用的?属性转换为内联样式属性。这是完美的,但它只适用于 Firefox。

document.execCommand("styleWithCSS", 0, true);

看起来这仍然不受 Microsoft 浏览器的支持,在上面的控制台中 returns 始终为 false,无论您将什么值作为参数传递。

有已知的替代品吗?

所以我设法通过仅针对 IE 和 Edge 的编辑器中的元素进行迭代并将对齐属性更改为与 text-align 内联的样式来使其工作。 这是该方法的样子:

var styleWithCSSIE = this.styleWithCSSIE = function() {
      if(/MSIE 10/i.test(navigator.userAgent) || /Edge\/\d./i.test(navigator.userAgent)) {
        var items = $(".note-editable *");
        $.each(items, function(i, element) {
          var $elem = $(element);
          var align = $elem.attr('align') || undefined;

          if(!align) {
            return;
          }

          $elem.css('text-align', align);
          $elem.removeAttr('align');
        });
      }
    };

并且在 summernote.js 执行 document.execCommand(sCmd, false, value)

之后才使用它