1

为了解决 Outlook 中不必要的差距,我正在尝试将样式属性:添加 mso-table-lspace:0pt !important;mso-table-rspace:0pt !important;到表格元素中。我尝试了以下方法:

- $(element).css('mso-table-lspace', '0pt');
- element.style.setProperty('mso-table-lspace', '0pt');
- element.setAttribute('style', 'mso-table-lspace:0pt;mso-table-rspace:0pt;');
- var sheet = document.createElement('style')
  sheet.innerHTML = "table {mso-table-lspace:0pt !important;mso-table-rspace:0pt !important;}";
  var firstEl = document.body.firstChild;
  document.body.insertBefore(sheet, firstEl)
- element.style.msoTableLspace = "0pt";

但没有任何影响结果的html。属性不会添加到表格样式中。我会很感激帮助。

4

1 回答 1

1

这是一篇旧文章,但我正在尝试做同样的事情,除了我正在尝试阅读这些 CSS 属性,所以我将把它写下来以供将来参考。

这些mso- *属性不是标准 HTML,而是Microsoft Office 专有的,因此无法使用element.style或通过 jQuery $(element).css()(内部依赖jQuery element.style)编写或读取它们。

处理它们的唯一方法(现在似乎可行)是直接操作样式属性字符串,如下所示:

var style = element.getAttribute("style");
if (style !== null) {
    style = style.trim();
    if (style.length > 0 && style.substr(-1) !== ";")
        style += "; ";
} else
    style = "";

element.setAttribute("style", style + "mso-table-lspace: 0pt;");

如果您只需要添加它们,并且您知道它们不存在,则可以附加它们而无需解析样式属性的内容。

测试:

  • Chrome 版本 92.0.4515.159(官方版本)(64 位)
  • 火狐 91.0.1(64 位)
  • Microsoft Edge 版本 92.0.902.67(官方版本)(64 位)
  • Internet Explorer 版本 20H2
于 2021-08-23T14:58:19.670 回答