控制文档焦点和滚动
场景说明
默认情况下,调用 API 操作文档时,文档会自动获得焦点,某些sdk还会使文档滚动到目标位置。通过 setUIState 方法可以配置在 SDK 操作时,不影响全局的焦点和滚动状态。
适用场景:
- 批量更新文档内容,避免页面跳动
- 多文档操作时,保持用户当前的操作焦点
- 预加载或同步数据时,不干扰用户浏览
相关 API 文档
示例代码
async function updateWithoutFocusAndScroll() {
// 设置 API 调用时不聚焦文档,也不滚动视图
await Application.setUIState({
cursorContext: {
focus: false, // 不聚焦到文档
scroll: false // 不滚动到目标位置
}
});
// 批量更新多个书签,不影响文档的焦点和滚动状态
const bookmarkData = {
'field1': '数据1',
'field2': '数据2',
'field3': '数据3'
};
for (const [name, value] of Object.entries(bookmarkData)) {
try {
const bookmark = await Application.ActiveDocument.Bookmarks.item(name);
await bookmark.setText(value);
} catch (error) {
console.error(`更新 ${name} 失败:`, error);
}
}
console.log('更新完成,文档焦点和滚动状态未改变');
}
注意事项
setUIState的配置对所有后续 API 调用生效,仅需配置一次即可- 默认行为是
{ focus: true, scroll: true } focus: false- 文档不会自动获得焦点scroll: false- 视图不会滚动到目标位置