Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve conceitos importantes relacionados com o trabalho com eventos no Word e fornece exemplos de código que mostram como registar processadores de eventos, processar eventos e remover processadores de eventos com o Word API JavaScript.
Eventos no Word
Quando determinadas alterações ocorrem num documento Word, as notificações de eventos são acionadas. A Word APIs JavaScript permite-lhe registar processadores de eventos que permitem que o suplemento execute automaticamente funções designadas quando essas alterações ocorrem. Os eventos a seguir têm suporte no momento:
Evento | Descrição | Objetos com suporte | Acionado durante a cocriação? |
---|---|---|---|
onAnnotationClicked |
Ocorre quando o utilizador seleciona uma anotação. Objeto de dados de evento: AnnotationClickedEventArgs |
Documento | Não |
onAnnotationHovered |
Ocorre quando o utilizador paira o cursor sobre uma anotação. Objeto de dados de evento: AnnotationHoveredEventArgs |
Documento | Não |
onAnnotationInserted |
Ocorre quando o utilizador adiciona uma ou mais anotações. Objeto de dados de evento: AnnotationInsertedEventArgs |
Documento | Não |
onAnnotationPopupAction |
Ocorre quando o utilizador executa uma ação num menu de pop-up de anotação. Objeto de dados de evento: AnnotationPopupActionEventArgs |
Documento | Não |
onAnnotationRemoved |
Ocorre quando o utilizador elimina uma ou mais anotações. Objeto de dados de evento: AnnotationRemovedEventArgs |
Documento | Não |
onContentControlAdded |
Ocorre quando é adicionado um controlo de conteúdo. Execute context.sync() no processador para obter as propriedades do novo controlo de conteúdo.Objeto de dados de evento: ContentControlAddedEventArgs |
Documento | Sim |
onDataChanged |
Ocorre quando os dados no controlo de conteúdo são alterados. Para obter o novo texto, carregue este controlo de conteúdo no processador. Para obter o texto antigo, não o carregue. Objeto de dados de evento: ContentControlDataChangedEventArgs |
ContentControl | Sim |
onDeleted |
Ocorre quando o controlo de conteúdo é eliminado. Não carregue este controlo de conteúdo no processador. Caso contrário, não conseguirá obter as respetivas propriedades originais. Objeto de dados de evento: ContentControlDeletedEventArgs |
ContentControl | Sim |
onEntered |
Ocorre quando o controlo de conteúdo é introduzido. Objeto de dados de evento: ContentControlEnteredEventArgs |
ContentControl | Sim |
onExited |
Ocorre quando o controlo de conteúdo é fechado, por exemplo, quando o cursor deixa o controlo de conteúdo. Objeto de dados de evento: ContentControlExitedEventArgs |
ContentControl | Sim |
onParagraphAdded |
Ocorre quando o utilizador adiciona novos parágrafos. Objeto de dados de evento: ParagraphAddedEventArgs |
Documento | Sim |
onParagraphChanged |
Ocorre quando o utilizador altera parágrafos. Objeto de dados de evento: ParagraphChangedEventArgs |
Documento | Sim |
onParagraphDeleted |
Ocorre quando o utilizador elimina parágrafos. Objeto de dados de evento: ParagraphDeletedEventArgs |
Documento | Sim |
onSelectionChanged |
Ocorre quando a seleção no controlo de conteúdo é alterada. Objeto de dados de evento: ContentControlSelectionChangedEventArgs |
ContentControl | Sim |
Eventos no modo de visualização
Observação
Os seguintes eventos estão disponíveis atualmente apenas na visualização pública. Para utilizar esta funcionalidade, tem de utilizar a versão de pré-visualização da biblioteca da API JavaScript do Office a partir da rede de entrega de conteúdos (CDN)Office.js. O arquivo de definição de tipo da compilação TypeScript e IntelliSense pode ser encontrado na CDN e DefinitelyTyped. Você pode instalar esses tipos com npm install --save-dev @types/office-js-preview
.
Evento | Descrição | Objetos com suporte | Acionado durante a cocriação? |
---|---|---|---|
onCommentAdded |
Ocorre quando são adicionados novos comentários. Objeto de dados de evento: CommentEventArgs |
Sim | |
onCommentChanged |
Ocorre quando um comentário ou a respetiva resposta é alterada. Objeto de dados de evento: CommentEventArgs |
Sim | |
onCommentDeleted |
Ocorre quando os comentários são eliminados. Objeto de dados de evento: CommentEventArgs |
Sim | |
onCommentDeselected |
Ocorre quando um comentário é desselecionado. Objeto de dados de evento: CommentEventArgs |
Sim | |
onCommentSelected |
Ocorre quando um comentário é selecionado. Objeto de dados de evento: CommentEventArgs |
Sim |
Gatilhos de eventos
Os eventos num documento Word podem ser acionados por:
- Interação do utilizador através do Word interface de utilizador (IU) que altera o documento.
- Código do Suplemento do Office (JavaScript) que altera o documento.
- Código do suplemento VBA (macro) que altera o documento.
- Um cocriador que altera remotamente o documento com a IU Word ou o código do suplemento. Para obter mais informações, veja Eventos e cocriação.
Qualquer alteração que cumpra o comportamento predefinido de Word acionará os eventos correspondentes num documento.
Ciclo de vida de um manipulador de eventos
Um manipulador de eventos é criado quando um suplemento registra o manipulador de eventos. É destruído quando o suplemento anula o registo do processador de eventos ou quando o suplemento é atualizado, recarregado ou fechado. Os processadores de eventos não persistem como parte do ficheiro de Word ou entre sessões com Word na Web.
Eventos e coautoria
Com a cocriação, várias pessoas podem trabalhar em conjunto e editar o mesmo documento Word em simultâneo. Em eventos que podem ser disparados por um coautor, como onParagraphChanged
, o objeto de evento respectivo conterá a propriedade fonte que indica se o evento foi acionado localmente pelo usuário atual (event.source == Local
) ou pelo coautor remoto (event.source == Remote
).
Os eventos que utilizam os seguintes objetos de dados são acionados durante a cocriação.
-
CommentEventArgs
(visualização) ContentControlAddedEventArgs
ContentControlDataChangedEventArgs
ContentControlDeletedEventArgs
ContentControlEnteredEventArgs
ContentControlExitedEventArgs
ContentControlSelectionChangedEventArgs
ParagraphAddedEventArgs
ParagraphChangedEventArgs
ParagraphDeletedEventArgs
Registrar um manipulador de eventos.
O seguinte exemplo de código regista um processador de eventos para o onParagraphChanged
evento no documento. O código especifica que, quando o conteúdo é alterado no documento, a handleChange
função é executada.
await Word.run(async (context) => {
eventContext = context.document.onParagraphChanged.add(handleChange);
await context.sync();
console.log("Event handler successfully registered for onParagraphChanged event in the document.");
}).catch(errorHandlerFunction);
Como mostrado no exemplo anterior, quando você registrar um manipulador de eventos, indica a função a ser executada quando o evento especificado ocorre. Você pode criar essa função para executar as ações que seu cenário exige. O exemplo de código a seguir mostra uma função de manipulador de eventos que simplesmente grava informações sobre o evento no console.
async function handleChange(event) {
await Word.run(async (context) => {
await context.sync();
console.log("Type of event: " + event.type);
console.log("Source of event: " + event.source);
}).catch(errorHandlerFunction);
}
Remover um manipulador de eventos
O exemplo de código seguinte regista um processador de eventos para o onParagraphChanged
evento no documento e define a handleChange
função que será executada quando o evento ocorrer. Também define a função deregisterEventHandler()
que pode ser chamada posteriormente para remover aquele manipulador de eventos. Tenha em atenção que o RequestContext
utilizado para criar o processador de eventos é necessário para removê-lo.
let eventContext;
async function registerEventHandler() {
await Word.run(async (context) => {
eventContext = context.document.onParagraphChanged.add(handleChange);
await context.sync();
console.log("Event handler successfully registered for onParagraphChanged event in the document.");
});
}
async function handleChange(event: Word.ParagraphChangedEventArgs) {
await Word.run(async (context) => {
await context.sync();
console.log(`${event.type} event was detected.`);
});
}
async function deregisterEventHandler() {
// The `RequestContext` used to create the event handler is needed to remove it.
// In this example, `eventContext` is being used to keep track of that context.
await Word.run(eventContext.context, async (context) => {
eventContext.remove();
await context.sync();
eventContext = null;
console.log("Removed event handler that was tracking content changes in paragraphs.");
});
}
Utilizar .track()
Determinados tipos de eventos também requerem que chame track()
o objeto ao qual está a adicionar o evento.
- Eventos de controlo de conteúdo
onDataChanged
onDeleted
onEntered
onExited
onSelectionChanged
- Eventos de comentários (pré-visualização)
onCommentAdded
onCommentChanged
onCommentDeleted
onCommentDeselected
onCommentSelected
O seguinte exemplo de código mostra como registar um processador de eventos em cada controlo de conteúdo. Uma vez que está a adicionar o evento aos controlos de conteúdo, track()
é chamado em cada controlo de conteúdo na coleção.
let eventContexts = [];
await Word.run(async (context) => {
const contentControls: Word.ContentControlCollection = context.document.contentControls;
contentControls.load("items");
await context.sync();
// Register the onDeleted event handler on each content control.
if (contentControls.items.length === 0) {
console.log("There aren't any content controls in this document so can't register event handlers.");
} else {
for (let i = 0; i < contentControls.items.length; i++) {
eventContexts[i] = contentControls.items[i].onDeleted.add(contentControlDeleted);
// Call track() on each content control.
contentControls.items[i].track();
}
await context.sync();
console.log("Added event handlers for when content controls are deleted.");
}
});
O seguinte exemplo de código mostra como registar processadores de eventos de comentários no objeto do corpo do documento e inclui uma body.track()
chamada.
let eventContexts = [];
// Registers event handlers.
await Word.run(async (context) => {
const body: Word.Body = context.document.body;
// Track the body object since you're adding comment events to it.
body.track();
await context.sync();
eventContexts[0] = body.onCommentAdded.add(onEventHandler);
eventContexts[1] = body.onCommentChanged.add(onChangedHandler);
eventContexts[2] = body.onCommentDeleted.add(onEventHandler);
eventContexts[3] = body.onCommentDeselected.add(onEventHandler);
eventContexts[4] = body.onCommentSelected.add(onEventHandler);
await context.sync();
console.log("Event handlers registered.");
});
Confira também
- Modelo de objeto de JavaScript do Word em Suplementos do Office
- Estes e outros exemplos estão disponíveis na nossa ferramenta de Script Lab: