Я создал панель задач для слова 2016, которая имеет две кнопки, такие как «addcontentcontrol» и «retrievecontentcontrol». Добавление элемента управления контентом в документе отлично работает. Когда я выбираю текст управления контентом и нажимаю «retrieveecontentcontrol», он возвращает текст. Однако я хочу проверить, содержит ли выделенный текст элемент управления содержимым или обычный текст. Заранее большое спасибо.Как проверить, не выбран ли выбранный элемент управления содержимым или нет в слове 2016, используя слово Javascript api
ответ
Я думаю, вы спрашиваете о двух вещах. Если вы выбираете текст управления контентом и хотите вернуть элемент управления контентом, то вам нужно будет сделать следующее:
Вы должны проверить свойство range.parentContentControl, чтобы проверить, находится ли выделенный текст в пределах контроль содержимого. Если возвращаемое значение не равно нулю, вы можете сравнить текстовое значение элемента управления содержимым и текстовое значение выбранного диапазона, чтобы убедиться, что они эквивалентны.
var contentControl = context.document.getSelection().parentContentControl;
Но если вы хотите, чтобы проверить, содержит ли некоторый произвольный текст из выбора элемента управления контентом, то вы хотите, чтобы проверить коллекцию управления контентом на полигоне.
var contentControlCollection = context.document.getSelection().contentControlCollection;
Возможно, это происходит из-за того, что вы не загружаете элемент управления содержимым перед вызовом context.sync()? ... попробуйте этот код, он должен работать (обратите внимание, что мы получаем общее исключение, если в выборе нет элемента управления содержимым). Обратите внимание, что этот пример предполагает, что если есть контроль содержания имеет название на это :)
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);
});
}
, спасибо @ Mike за ответ, но это не working.I выбрать весь текст внутри contentcontrol, который имеет значения тегов и названий, но context.document.getSelection(). parentContentControl возвращает «undefined». В документе есть куча элементов управления содержимым, я хочу узнать, какой текст выбран или нет. – office365developer
Можете ли вы разместить свой код? –
Я думаю, что вторая строка должна использовать свойство 'contentControls', а не' contentControlsCollection', которое является типом. Попробуйте @ office365developer –