Skip to main content

控制文档焦点和滚动

场景说明

默认情况下,调用 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 - 视图不会滚动到目标位置