Excel加载项打开任务窗格时Shared Runtime未加载问题求助
问题
开发的Excel加载项包含任务窗格、自定义函数及对话框,采用Shared Runtime,其URL和任务窗格打开的页面一致。本来是在Shared Runtime/任务窗格页面的document ready事件里根据设置启用/禁用功能区按钮,但调用自定义函数或打开对话框时功能区控件都正常,唯独打开任务窗格时会报错RichApi.Error: The Sharedruntime ID is missing。推测是Shared Runtime还没加载完,想问有没有办法主动加载Shared Runtime,或者有没有靠谱的事件能确认任务窗格里的Shared Runtime已经加载完成?
配置代码如下:
<Runtimes> <Runtime resid="SharedRuntime.Url" lifetime="long" /> </Runtimes> <DefaultSettings> <SourceLocation DefaultValue="~remoteAppUrl/Src/Login/login.html" /> </DefaultSettings> <bt:Url id="SharedRuntime.Url" DefaultValue="~remoteAppUrl/Src/Login/login.html" />
解决方案
- 放弃
document ready,用Office.js自带的初始化事件Office.onReady()是确认Office加载环境(包括Shared Runtime)就绪的可靠事件,直接用它替代document ready来处理功能区按钮的状态调整。示例代码:Office.onReady(info => { if (info.host === Office.HostType.Excel) { // 这里写启用/禁用功能区按钮的逻辑 Office.ribbon.requestUpdate({ tabs: [ { id: "你的选项卡ID", groups: [ { id: "你的组ID", controls: [ { id: "你的按钮ID", enabled: true } // 根据实际设置改状态 ] } ] } ] }); } }); - 检查Shared Runtime配置的完整性
确认清单里的配置没有遗漏:- 确保
<Runtime>节点的resid指向的URL和任务窗格的SourceLocation完全一致(你的配置里已经符合,但要注意实际部署的路径不能有差异) - 清单的
<Permissions>节点要设置合适的权限,比如ReadWriteDocument,避免权限问题导致Runtime加载异常
- 确保
- 备选:手动触发Runtime初始化
如果Office.onReady()偶尔还是有延迟,可以试试在任务窗格加载后调用Office.context.runtime.initialize(),不过这个方法一般作为应急方案,优先用Office.onReady()更稳妥
内容的提问来源于stack exchange,提问作者Kashif
相关产品推荐
相关产品推荐

