获取选区内容
场景说明
获取用户当前选中的文档内容,是实现文档交互功能的基础。可以获取选区的文本、样式等信息。
适用场景:
- 获取用户选中的文本
- 对选中内容进行处理
- 实现自定义编辑功能
- 内容提取和分析
相关 API 文档
示例代码
获取选区文本内容
async function getSelectionText() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 获取选区文本
const text = await range.getText();
console.log('选中的文本:', text);
return text;
}
判断选区是否为空
async function isSelectionCollapsed() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 判断是否是闭合范围(即没有选中内容,只有光标)
const isCollapsed = range.isCollapsed;
if (isCollapsed) {
console.log('当前没有选中内容,只有光标');
} else {
console.log('当前有选中内容');
}
return isCollapsed;
}
获取选区中的书签
async function getBookmarksInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 获取选区中的所有书签
const bookmarks = range.Bookmarks;
const count = await bookmarks.count;
console.log('选区中的书签数量:', count);
}
获取选区中的可编辑区域
async function getPermMarksInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 获取选区中的可编辑区域集合
const permMarks = range.PermMarks;
const count = await permMarks.count;
console.log('选区中的可编辑区域数量:', count);
}
获取选区中的批注
async function getCommentsInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 获取选区中的批注集合
const comments = range.Comments;
const count = await comments.count;
console.log('选区中的批注数量:', count);
}
获取选区中的表格
async function getTablesInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 获取选区中的表格集合
const tables = range.Tables;
const count = await tables.count;
console.log('选区中的表格数量:', count);
}
获取选区的样式信息
async function getSelectionStyle() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 获取选区的加粗状态
const isBold = await range.Bold;
console.log('是否加粗:', isBold);
// 获取选区的斜体状态
const isItalic = await range.Italic;
console.log('是否斜体:', isItalic);
// 获取选区的下划线状态
const underline = await range.Underline;
console.log('下划线类型:', underline);
}
使用 Find 在选区中查找
async function findInSelection() {
// 通过 Selection 对象获取当前选区
const range = await Application.Selection.range;
// 获取选区的查找对象
const find = range.Find;
// 在选区中查找文本
const count = await find.findData('关键词', false, false);
console.log('在选区中找到的匹配项数量:', count);
}
获取选区的位置信息
async function getSelectionPosition() {
const range = await Application.Selection.range;
// 获取选区末尾所在的页码
const pageNumber = await range.information(Word.WdInformation.wdActiveEndPageNumber);
console.log('选区末尾所在页码:', pageNumber);
}
注意事项
- 推荐使用
Application.Selection.range获取当前选区 - 如果没有选中内容,返回的是光标位置的闭合范围
- 可以通过
isCollapsed属性判断是否有选中内容 - 选区对象是 Range 类型,可以使用 Range 的所有方法和属性
- 通过选区可以访问其中包含的书签、可编辑区域、批注、表格等元素
- 选区的样式属性(如 Bold、Italic)表示选区内文本的格式