【问题标题】:insertHtml on IPad inserts empty content controliPad 上的 insertHtml 插入空内容控件
【发布时间】:2019-02-20 21:04:19
【问题描述】:

我试图将 html 插入 office365 word 文档并使用insertHtml 方法。 insertHtml 插入一个空的内容控件(显示占位符而不是我的 html)。

可以在 iPad iOS 11.3 浏览器 Safari 和 Chrome 上重现问题。 iPad 和其他设备上的原生词应用程序(office365 词和原生词)正在正确插入。

代码示例:

 Word.run(async context => {
  const currentRange = context.document.getSelection();
  const control = currentRange.insertContentControl();
  control.insertHtml(
    '<b>Insert any text to test</b>',
    Word.InsertLocation.replace,
  );
  await context.sync().catch(console.error);
})

任何帮助将不胜感激。

【问题讨论】:

  • 请在宽限期结束前看看我的回答并给我反馈。

标签: javascript ms-word office-js


【解决方案1】:

当您说“可以在 iPad iOS 11.3 浏览器 Safari 和 Chrome 上重现”时——桌面或 Mac 上的 Chrome 呢?如果它总是在 Word Online 上,那很可能只是 insertContentControl API 的 Word Online 实现的一个错误。如果是这样,如果你还没有,我建议你在https://github.com/officedev/office-js/issues 上提交一个错误

从表面上看,您编写的代码似乎足够正确。如果你想让它更好一点,你最好在 Word.run 的外面贴上“.catch”。这对您的特定情况没有影响,因为无论如何您都是在批处理的最后一行调用context.sync(),但在某些情况下可能会发生这种情况。因此,作为最佳实践,请使用 catch 保护您的整个 .run,而不仅仅是 sync

所以:这可能是一个平台错误。如果是这样,请在上面的链接中提交。

【讨论】:

  • 在 Linux、Windows、Mac 不同的浏览器上测试 - 工作正常。感谢您的回复。
【解决方案2】:

尝试返回一些值。

Word.run(async context => {
  const currentRange = context.document.getSelection();
  const control = currentRange.insertContentControl();
  control.insertHtml(
    '<b>Insert any text to test</b>',
    Word.InsertLocation.replace,
  );
  await context.sync().catch(console.error);
  return false;
})

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
相关资源
最近更新 更多