【问题标题】:Inconsistent host behavior with Office JS insertHTML and paragraph formatting与 Office JS insertHTML 和段落格式不一致的主机行为
【发布时间】:2018-03-29 14:21:55
【问题描述】:

我注意到 Word 2016、Word for Mac 和 Word Online 之间的 office-js 不一致。

当插入具有块/段落格式的单个<p> 元素时,Word 2016 似乎不应用<p> 元素的style 属性中定义的段落格式。我可以在文档正文和内容控件中重现此内容。

当我在 Word 2016 或 Word for Mac 上的空文档中执行此 sn-p 时:

await Word.run(async (context) => {

    context.document.body.insertHtml(
        "<p style='text-align:right'>This should be right aligned!</p>",
        "replace");

    await context.sync();
});

段落被插入但保持左对齐。

当我在 Word Online 上执行相同的 sn-p 时,段落右对齐,正如预期的那样。

ScriptLab Gist

一个丑陋的解决方法是在&lt;p&gt; 块之后添加一个&lt;br/&gt; 元素:

"<p style='text-align:right'>This should be right aligned!</p><br/>",

这会强制 Word 2016 应用 &lt;p&gt; 块的格式,但我们不能在所有情况下都应用它,因为它有时会破坏页面的其余部分。这也不是我们期望的。

是否有另一种插入 HTML 的方法,该 HTML 包含适用于所有主机的单段格式 &lt;p&gt; 块?

【问题讨论】:

  • 这听起来确实像一个错误。我不确定我期望在这里看到哪种行为,但它肯定应该跨平台保持一致。我怀疑&lt;p&gt; 的预期行为取决于您将其插入的位置(即在现有段落的中间与在新行上)。您正在测试 Word 2016 的哪些版本/内部版本,这在 Windows 和 Mac 之间是否 100% 一致?
  • 我以前见过这个,我认为这是一个已知的错误。如果没记错的话,它是忽略样式属性的最后一段。请尝试在 insertHtml 的同一个调用中插入多个段落,并在 style 属性中尝试不同类型的格式。我想你会发现除了最后一段之外一切都正常。
  • @MarcLaFleur 我希望这种行为与 Word Online 上的行为一样,因为它尊重 &lt;p&gt; 元素的段落格式。我在 Word 2016 Version 1804 Build 9226.2021(Office Insider)上复制了这个。据我所知,它在 Windows 和 Mac 上的行为相同。
  • @RickKirkham 你是对的,如果我插入两个连续的&lt;p&gt; 块,则应用第一个块的文本对齐样式,但忽略第二个块的文本对齐样式。有趣的是,如果我添加 color 样式,它会按预期应用于两个块。似乎问题仅限于段落格式样式。
  • @Hlynur 我在 font-family 和其他样式中看到过它。我很惊讶它不会发生在颜色上。

标签: javascript ms-word office-js


【解决方案1】:

这是一个已知的错误。在修复之前,您可能已经找到了最好的解决方法,即添加&lt;br/&gt;(或空&lt;p&gt;&lt;/p&gt;)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多