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

加载Office加载项后如何获取已保存设置?任务窗格加载报错求解

没错,你猜的完全对!这个TypeError就是因为jQuery的$(document).ready()触发得太早了——DOM结构加载完了,但Office.js还没完成初始化,这时候Office.context根本还没被创建出来,自然就找不到Settings这个属性了。

要解决这个问题,你得把依赖Office API的代码,放到Office官方提供的初始化回调里,确保只有当Office完全就绪后再执行。这里有两种常用的方式:

1. 传统的Office.initialize事件

这是比较经典的写法,把你的代码嵌套在这个事件的回调里:

Office.initialize = function(reason) {
  // 先等DOM就绪,再操作元素
  $(document).ready(function() {
    // 这里Office.context已经完全可用了
    $("#mysetting").val(Office.context.Settings.get("mysetting"));
  });
};

参数reason会告诉你初始化的触发原因(比如首次加载、文档恢复等),如果不需要可以直接忽略它。

2. 更现代的Office.onReady()方法

这个方法返回Promise,写法更灵活,适合异步编程场景:

Office.onReady().then(function() {
  // Office初始化完成,现在可以安全调用所有Office API了
  $("#mysetting").val(Office.context.Settings.get("mysetting"));
});

如果你的加载项只针对特定Office应用(比如Excel),还可以指定参数Office.onReady("excel"),不过一般通用场景直接调用就行。

另外还要注意一个细节:页面里脚本的加载顺序必须是先加载Office.js,再加载jQuery和你的自定义脚本,比如HTML里要这么写:

<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="你的自定义脚本文件.js"></script>

要是顺序搞反了,也可能出现奇怪的初始化问题。

简单来说,你的核心问题就是只等了DOM就绪,没等Office本身初始化完成——这是Office加载项开发里非常常见的新手坑,调整一下代码的执行时机就搞定啦!

内容的提问来源于stack exchange,提问作者Eric Haas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:05:29