2016-04-18 3 views
3

Il y a beaucoup de contrôles de contenu dans un document et je dois trouver comment le curseur est dans quel contrôle de contenu pour que je sélectionne ce contrôle et que je fasse l'opération en conséquence. Je pense qu'en implémentant les événements onEnter et onExit pour les contrôles de contenu, je peux y arriver. Mais je ne sais pas comment déclarer et invoquer ces eventhandlers dans JavaScript API. Toute aide est vraiment appréciée.Comment implémenter l'événement OnEnter et OnExit sur ContentControl en utilisant Javascript API pour Word 2016

Répondre

2

Vous devez utiliser une combinaison d'API pour mettre en œuvre cette fonctionnalité avec l'ensemble de l'API actuelle:

  1. d'abord ajouter un gestionnaire d'événements pour le Document.selectionChanged event.
  2. Chaque fois que l'événement se déclenche, obtenez l'objet Range correspondant à la sélection dans le document, en utilisant le Document.getSelection() API.
  3. Vérifiez la plage pour voir s'il existe un contrôle de contenu, en utilisant la relation Range.contentControls.

-Michael (PM pour les compléments)

1

Bonne question! Nous avons un événement onEnter pour les contrôles de contenu (nous l'appelons binding.selectionChanged.) Nous avons également un événement binding.dataChanged qui se déclenche si l'utilisateur change le contenu et quitte le contrôle de contenu

donc une solution alternative à ce que Michael proposé est de créer des liaisons pour chaque contrôle de contenu dans le document, puis inscrivez-vous pour de tels événements

vous pouvez y parvenir par:.. 1. parcourant la collection de contrôle de contenu (utilisation body.contentControls collection) 2. pour chaque contrôle de contenu , saisissez ou définissez le titre et utilisez-le pour créer une liaison par l'élément nommé.Cochez la méthode bindings.addFromNamedItem. 3. sur le callBack assurez-vous de vous abonner e à selectionChanged (ou DataChanged) pour la liaison. le code de liaison et create inscrire aux événements ressemblera à ceci:

function CreateCCSelectionChangedEvent() { 
 
     Office.context.document.bindings.addFromNamedItemAsync("TitleOfTheContentControl", { id: 'Binding01' }, function (result) { 
 
      if (result.status == 'succeeded') { 
 
       result.value.addHandlerAsync(Office.EventType.BindingSelectionChanged, handler); 
 
      } 
 
     }); 
 
     
 
    } 
 

 
    function handler() { 
 
     console.log("Event Triggered!"); 
 
    }

Hope this helps!