Я создал панель задач для Word 2016, в которой есть две кнопки, такие как «добавить управление содержимым» и «получить управление содержимым». Добавление элемента управления содержимым в документ работает нормально. Когда я выбираю текст этого элемента управления содержимым и нажимаю «получить управление содержимым», он возвращает текст. Однако я хочу проверить, содержит ли выделенный текст элемент управления содержимым или обычный текст. Заранее большое спасибо.
Как проверить, содержит ли выделенный текст элемент управления содержимым или нет в Word 2016, используя Word Javascript API
Ответы (2)
Я думаю, вы спрашиваете о двух вещах. Если вы выбираете текст элемента управления содержимым и хотите вернуть элемент управления содержимым, вам нужно сделать следующее:
Вы захотите проверить свойство range.parentContentControl, чтобы проверить, находится ли выделенный текст в элементе управления содержимым. Если возвращаемое значение не равно null, вы можете сравнить текстовое значение элемента управления содержимым и текстовое значение выбранного диапазона, чтобы убедиться, что они эквивалентны.
var contentControl = context.document.getSelection().parentContentControl;
Но если вы хотите проверить, содержит ли какой-либо произвольный текст из выделения элемент управления содержимым, вам нужно проверить коллекцию элементов управления содержимым в диапазоне.
var contentControlCollection = context.document.getSelection().contentControlCollection;
contentControls
, а не contentControlsCollection
, которое является типом. Попробуйте это @office365developer
- person Miro J.; 19.09.2016
Может быть, это происходит из-за того, что вы не загружаете элемент управления содержимым перед вызовом context.sync()? ... попробуйте этот код, он должен работать (обратите внимание, что мы получаем GeneralException, если в выборе нет элемента управления содержимым). Обратите внимание, что в этом примере предполагается, что если есть элемент управления содержимым, на нем есть заголовок :)
function insideOfContentControlCheck() {
Word.run(function (ctx) {
var myCC = ctx.document.getSelection().parentContentControl;
ctx.load(myCC); // I think this is the part you are missing!
return ctx.sync()
.then(function () {
console.log(myCC.title);// if there is a content control we'll show the title
});
}).catch(function (e) {
//there is no ContentControl.
console.log("Error", e.message);
});
}