2016-04-17 2 views
1

Я создал панель задач для слова 2016, которая имеет две кнопки, такие как «addcontentcontrol» и «retrievecontentcontrol». Добавление элемента управления контентом в документе отлично работает. Когда я выбираю текст управления контентом и нажимаю «retrieveecontentcontrol», он возвращает текст. Однако я хочу проверить, содержит ли выделенный текст элемент управления содержимым или обычный текст. Заранее большое спасибо.Как проверить, не выбран ли выбранный элемент управления содержимым или нет в слове 2016, используя слово Javascript api

ответ

1

Я думаю, вы спрашиваете о двух вещах. Если вы выбираете текст управления контентом и хотите вернуть элемент управления контентом, то вам нужно будет сделать следующее:

Вы должны проверить свойство range.parentContentControl, чтобы проверить, находится ли выделенный текст в пределах контроль содержимого. Если возвращаемое значение не равно нулю, вы можете сравнить текстовое значение элемента управления содержимым и текстовое значение выбранного диапазона, чтобы убедиться, что они эквивалентны.

var contentControl = context.document.getSelection().parentContentControl; 

Но если вы хотите, чтобы проверить, содержит ли некоторый произвольный текст из выбора элемента управления контентом, то вы хотите, чтобы проверить коллекцию управления контентом на полигоне.

var contentControlCollection = context.document.getSelection().contentControlCollection; 
+0

, спасибо @ Mike за ответ, но это не working.I выбрать весь текст внутри contentcontrol, который имеет значения тегов и названий, но context.document.getSelection(). parentContentControl возвращает «undefined». В документе есть куча элементов управления содержимым, я хочу узнать, какой текст выбран или нет. – office365developer

+0

Можете ли вы разместить свой код? –

+0

Я думаю, что вторая строка должна использовать свойство 'contentControls', а не' contentControlsCollection', которое является типом. Попробуйте @ office365developer –

0

Возможно, это происходит из-за того, что вы не загружаете элемент управления содержимым перед вызовом 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); 
 

 
     }); 
 

 
    }