2016-04-17 5 views
1

Ich habe einen Aufgabenbereich für das Wort 2016 erstellt, der zwei Schaltflächen wie 'addcontentcontrol' und 'retrievecontentcontrol' hat. Das Hinzufügen eines Inhalts-Steuerelements im Dokument funktioniert einwandfrei. Wenn ich den Text dieses Inhalts-Steuerelements auswähle und auf "recetcontentcontrol" klicke, wird Text zurückgegeben. Ich möchte jedoch überprüfen, ob der ausgewählte Text Inhaltskontrolle oder einfachen Text enthält. Vielen Dank im Voraus.Wie überprüft man, ob ausgewählter Text die Kontrolle über Inhalt enthält oder nicht in Wort 2016 mit Word Javascript api

Antwort

1

Ich denke, Sie fragen nach zwei Dingen. Wenn Sie den Text eines Inhaltssteuerelements auswählen und das Inhaltssteuerelement zurückgeben möchten, sollten Sie Folgendes tun:

Sie sollten die range.parentContentControl-Eigenschaft überprüfen, um zu überprüfen, ob der ausgewählte Text darin enthalten ist eine Inhaltskontrolle. Wenn der zurückgegebene Wert nicht null ist, möchten Sie möglicherweise den Textwert des Inhaltssteuerelements und den Textwert des ausgewählten Bereichs vergleichen, um sicherzustellen, dass sie gleichwertig sind.

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

Aber wenn Sie, ob einige beliebigen Text aus einer Auswahl überprüfen möchten eine Inhaltskontrolle enthält, dann werden Sie die Inhaltskontrolle Sammlung auf den Bereich überprüfen möchten.

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

@ Mike :), Danke für Ihre Antwort, aber es ist nicht working.I gesamten Text in einem wählen contentcontrol, das über Tag- und Titelwerte verfügt, aber context.document.getSelection(). parentContentControl gibt 'undefined' zurück. Es gibt eine Menge von Inhaltskontrollen im Dokument, ich möchte herausfinden, welcher Text ausgewählt ist oder nicht. – office365developer

+0

Können Sie Ihren Code posten? –

+0

Ich denke, die zweite Zeile muss die 'contentControls' -Eigenschaft und nicht' contentControlsCollection', die ein Typ ist. Probieren Sie das @ office365developer –

0

Vielleicht passiert das, weil Sie das Inhaltssteuerelement nicht laden, bevor Sie context.sync() aufrufen? ... versuche diesen Code, er muss funktionieren (beachte, dass wir eine GeneralException erhalten, wenn in der Auswahl kein Content-Steuerelement vorhanden ist). Beachten Sie, dass diese Probe, dass davon ausgegangen, wenn es eine Inhaltskontrolle ist es einen Titel hat auf sie

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

 
     }); 
 

 
    }