Word 插件有 Office-js 的官方剪贴板访问权限吗?

问题描述 投票:0回答:4

我已经查看了 office-js 文档,但没有找到任何通过 Word 插件使用剪贴板的正式方法。

我尝试使用较新的

navigator.clipboard.writeText
,但它会被内部 Word 浏览器(托管加载项的位置)自动拒绝,而不会提示用户(就像浏览器一样)。我没有看到任何对权限策略的相关支持,可用于与 Word 进行通信,表明加载项需要剪贴板权限。

因此,我现在正在诉诸已弃用的

document.executeCommand('copy')
,但担心这会让我的加载项被 MS App Store 拒绝。

是否有官方/认可的方式在 MS Word 插件中使用剪贴板?

ms-word office-js office-addins word-addins word-web-addins
4个回答
1
投票

OfficeJS 没有为此提供任何东西。您仍然可以使用 Document.execCommand() API,其中包括“复制”、“剪切”和“粘贴”。但它已被弃用,并且可能不再在网络浏览器中工作。

当开发团队完成规划过程时,会考虑技术社区的功能请求。使用 github 标签:

Type: product feature request
,位于 https://aka.ms/M365dev-suggestions .


1
投票

Excel富客户端API似乎只有一种方法Range.copyFrom。我也找不到替代方案。也许您可以要求提供新功能。是否会出现在未来的功能列表中可能还需要一些时间。


0
投票

导致控制台错误的限制:

由于应用于当前文档的权限策略,剪贴板 API 已被阻止...

仅限于通过 Web 浏览器调用 OfficeJS,但如果通过客户端桌面设备(例如 MacOS 上的 Word)调用,则

navigator.clipboard.writeText
似乎可以工作。


0
投票

这太令人恼火了。请参阅相关票证(https://github.com/OfficeDev/office-js/issues/1991)我通过以下解决方法取得了一些成功。似乎可以在我当前的 chrome 版本中工作 - 118.0.5993.70(官方版本)(arm64)

export function navigator_clipboard_writeText(text: string): Promise<void> {
  return new Promise(function (resolve, reject) {
    try {
      const textArea = document.createElement('textarea');
      textArea.value = text;
      document.body.appendChild(textArea);
      textArea.select();
      document.execCommand('copy');
      textArea.remove();
      resolve();
    } catch (e) {
      reject(e);
    }
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.