跳到主要内容

文档 reload 后事件监听及 SDK 配置失效

问题描述

文档在某些场景下会重新加载(reload),reload 后以下内容会失效:

  • 通过 Application.addListener 注册的事件监听
  • 通过 SDK 设置的各类配置(如工具栏配置、权限配置等)

这是因为事件监听和 SDK 配置信息在文档侧也存储了一份,文档重新加载后文档侧的数据会丢失,需要重新设置。

解决方案

使用 ZOfficeSDK.addListener 监听 IDOCS.EVENT.FileOpen 事件。该事件在每次文档打开(包括 reload 后重新打开)时都会触发,且不受文档 reload 影响

IDOCS.EVENT.FileOpen 回调中重新注册事件监听和 SDK 配置,即可确保 reload 后一切恢复正常。

关于 IDOCS.EVENT.FileOpen 事件的详细说明,参见【监听事件 - IDOCS.EVENT.FileOpen

var app;
ZOfficeSDK.addListener('.my-doc-editor', 'IDOCS.EVENT.FileOpen', async () => {
console.log('file open');
app = await ZOfficeSDK.connect('.my-doc-editor');
await app.ready();

// 重新注册事件监听
app.addListener('IDOCS.EVENT.FileStatus', (data) => {
console.log('FileStatus: ', data);
});

// 重新设置 SDK 配置(示例:设置工具栏)
// app.setToolbar({ ... });
});

ZOfficeSDK.mount('https://example.com/docs/app/.../edit/content?token=xxx', '.my-doc-editor', true);

提示: 所有需要在文档生命周期内持续生效的事件监听和 SDK 配置,都建议放在 IDOCS.EVENT.FileOpen 回调中进行设置。