文档 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回调中进行设置。