You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Office JS Word插件中为特定键盘命令添加事件处理器?

在Office JS Word插件中监听键盘命令并执行操作

可以实现你的需求,但Office JS没有直接监听全局键盘事件的API,推荐通过以下两种方式完成:

1. 注册自定义全局快捷键(推荐)

你可以在插件的manifest.xml中声明自定义快捷键,绑定到指定的插件函数,这种方式可以在Word主窗口激活时全局触发,不受插件界面焦点影响。

步骤:

  • 打开插件的manifest.xml,在<ExtensionPoint>节点下添加自定义快捷键配置(注意避开Word默认快捷键,比如ctrl+return可能和默认的段落分隔冲突,这里改用ctrl+shift+enter示例):
<ExtensionPoint xsi:type="CustomKeyboardShortcuts">
  <CustomKeyboardShortcut>
    <CommandId>InsertHelloWorld</CommandId>
    <Key>Enter</Key>
    <Control>true</Control>
    <Shift>true</Shift>
  </CustomKeyboardShortcut>
</ExtensionPoint>
  • 在插件的JS代码中注册对应的命令函数:
// 关联命令ID和执行函数
Office.actions.associate("InsertHelloWorld", insertHelloWorld);

async function insertHelloWorld() {
  await Word.run(async (context) => {
    // 在文档末尾插入文本
    const docBody = context.document.body;
    docBody.insertParagraph('Hello world', Word.InsertLocation.end);
    await context.sync();
  }).catch(err => console.error(err));
}

2. 监听插件界面的键盘事件(局限性)

如果仅需要在插件任务窗格/对话框获得焦点时触发,可以直接监听DOM的键盘事件,但这种方式无法在Word主窗口操作时触发:

document.addEventListener('keydown', async (e) => {
  // 捕获ctrl+enter组合键
  if (e.ctrlKey && e.key === 'Enter') {
    e.preventDefault(); // 阻止默认行为
    await Word.run(async (context) => {
      const docBody = context.document.body;
      docBody.insertParagraph('Hello world', Word.InsertLocation.end);
      await context.sync();
    });
  }
});

注意事项

  • 自定义快捷键需避免与Word默认快捷键冲突,可通过Word「选项-自定义功能区-键盘快捷键」查看已有组合。
  • 全局快捷键仅支持部分按键组合,具体规则参考Office插件manifest规范。

内容的提问来源于stack exchange,提问作者Bobby Koteski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:22:41