【问题标题】:Any replacement for "styleWithCSS" for IE11/Edge?IE11/Edge 的“styleWithCSS”有什么替代品吗?
【发布时间】:2017-02-09 18:47:15
【问题描述】:

我知道有两个关于这个的帖子,但一个不是我要找的,另一个是 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);

看起来微软浏览器仍然不支持这一点,无论您作为参数传递什么值,在上面的控制台中都会返回 false。

有没有已知的替代品?

【问题讨论】:

    标签: javascript html css internet-explorer microsoft-edge


    【解决方案1】:

    所以我设法通过仅针对 IE 和 Edge 遍历编辑器中的元素并将 align 属性更改为带有 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)

    【讨论】:

    • 干得好。 document.execCommand 一直没有很好地规划和实施。这是跨浏览器的噩梦。
    • 是的,我从图书馆 github 上的某个人那里得到了帮助。它快把我逼疯了!现在我试图解决关于 FF 和 Edge 标题的“粗体”问题。另一个噩梦。
    猜你喜欢
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多