2016-04-17 8 views
1

「addcontentcontrol」や「retrievecontentcontrol」のような2つのボタンがある単語2016の作業ペインを作成しました。ドキュメント内のコンテンツコントロールを追加すると問題はありません。コンテンツコントロールのテキストを選択して 'retrievecontentcontrol'を押すと、テキストが返されます。ただし、選択したテキストにコンテンツコントロールまたはプレーンテキストが含まれているかどうかを確認したい。ありがとうございます。選択されたテキストが単語2016の単語を使用しているかどうかをチェックする方法Javascript APIを使用して

答えて

1

私はあなたが約2つのことを尋ねていると思います。コンテンツコントロールのテキストを選択していて、コンテンツコントロールを返す場合は、次の操作を行います。

選択したテキストが範囲内にあるかどうかを確認するには、range.parentContentControlプロパティをチェックするコンテンツコントロール。返される値がnullでない場合は、コンテンツコントロールのテキスト値と選択範囲のテキスト値を比較して、それらが同等であることを確認することができます。

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

ただし、選択範囲の任意のテキストにコンテンツコントロールが含まれているかどうかを確認するには、その範囲のコンテンツコントロールコレクションを確認する必要があります。

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

@マイク、返事のおかげで、しかし、それは内部のテキスト全体を選択しworking.Iではありませんcontentcontrolはタグとタイトルの値を持ちますが、context.document.getSelection()。parentContentControlは 'undefined'を返します。ドキュメントにはコンテンツコントロールがたくさんあるので、どのテキストが選択されているかを知りたい。 – office365developer

+0

コードを投稿できますか? –

+0

私は2行目はtypeであるcontentControlsCollectionではなく 'contentControls'プロパティを使わなければならないと思います。 @ office365デベロッパーを試してみてください –

0

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); 
 

 
     }); 
 

 
    }

関連する問題