Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Ao desenvolver e depurar recursos Web JavaScript que você usa como um manipulador de eventos em um aplicativo controlado por modelos, você normalmente precisa fazer várias alterações e testar como elas funcionam. Fazer upload e publicar o recurso da Web após cada alteração retarda esse processo.
As ferramentas de desenvolvedor do navegador moderno fornecem recursos para salvar uma cópia local do recurso da Web. Quando o aplicativo controlado por modelo solicita o recurso da Web, o navegador carrega sua cópia local em vez do arquivo do servidor. Você pode editar a cópia local, atualizar a página e testar suas alterações sem carregar e publicar repetidamente o recurso da Web. Você não precisa instalar software proxy, extensões de navegador ou certificados.
Saiba mais sobre como os navegadores modernos fornecem esses recursos.
- Microsoft Edge Substituições locais
- Google Chrome substituições locais
- Firefox Substituições de rede
- Safari WebKit Web Inspector Local Overrides
Important
Uma sobrescrita local altera apenas o recurso carregado pelo navegador. Ele não atualiza o recurso Web JavaScript no Microsoft Dataverse e outros usuários não veem suas alterações. Depois de concluir a solução de problemas, copie as alterações que deseja manter no arquivo de origem e use o processo normal para atualizar e publicar o recurso da Web. Este artigo não descreve esse processo.
Prerequisites
Antes de começar:
Você precisa de um aplicativo baseado em modelo que tenha um recurso Web JavaScript usado para fornecer manipuladores de eventos para um formulário.
Este artigo usa o recurso Web JavaScript descrito em Escreva seu primeiro script de cliente. Esse passo a passo cria um recurso Web JavaScript chamado
example_form-script.js, adiciona-o ao formulário Account e registra funções para os eventos On Load e On Save do formulário e o evento On Change da coluna Name.Note
Você pode baixar o JavaScriptWebResourceExampleSolution_1_0_managed.zip. Instale essa solução gerenciada e você encontrará um aplicativo controlado por modelo que representa o resultado concluído do artigo passo a passo Escrever seu primeiro script do cliente.
Este artigo usa Microsoft Edge, mas as ferramentas de desenvolvedor do Google Chrome, Firefox e Safari têm recursos semelhantes.
Crie uma pasta vazia no computador para Microsoft Edge DevTools para armazenar substituições locais. Não use uma pasta que contenha arquivos de origem, credenciais, certificados ou outras informações confidenciais. O DevTools cria a estrutura de pastas de que precisa nessa pasta. Este artigo usa,
C:\temp\overridesmas talvez você queira usarC:\Users\<your user name>\overrides.
Este artigo usa este script de Escreva seu primeiro script de cliente:
// Define a unique namespace for the sample library.
window.Example ??= {};
(() => {
const notificationId = "_myUniqueId";
const currentUserName = Xrm.Utility.getGlobalContext().userSettings.userName;
const message = `${currentUserName}: Your JavaScript code in action!`;
// Code to run in the form OnLoad event
window.Example.formOnLoad = (executionContext) => {
const formContext = executionContext.getFormContext();
// Display the form level notification as an INFO
formContext.ui.setFormNotification(message, "INFO", notificationId);
// Wait for 5 seconds before clearing the notification
window.setTimeout(
() => formContext.ui.clearFormNotification(notificationId),
5000
);
};
// Code to run in the column OnChange event
window.Example.attributeOnChange = (executionContext) => {
const formContext = executionContext.getFormContext();
// Automatically set some column values if the account name contains "Contoso"
const accountName = formContext.getAttribute("name").getValue();
if (accountName?.toLowerCase().includes("contoso")) {
formContext.getAttribute("websiteurl").setValue("https://www.contoso.com");
formContext.getAttribute("telephone1").setValue("425-555-0100");
formContext.getAttribute("description").setValue("Website URL, Phone and Description set using custom script.");
}
};
// Code to run in the form OnSave event
window.Example.formOnSave = () => {
// Display an alert dialog
Xrm.Navigation.openAlertDialog({ text: "Record saved." });
};
})();
Este recurso Web JavaScript fornece três funções registradas para os seguintes eventos:
| Função | Event |
|---|---|
Example.formOnLoad |
Form OnLoad |
Example.attributeOnChange |
OnChange do campo |
Example.formOnSave |
Form OnSave |
As etapas também funcionam com qualquer recurso Web JavaScript registrado como um manipulador de eventos de formulário. Use o nome do recurso da Web e dispare seu evento quando as etapas se referirem ao exemplo.
Confirme se o script publicado funciona
Antes de criar uma substituição, confirme o comportamento atual do recurso da Web publicado:
Abra o aplicativo baseado em modelo no Microsoft Edge.
Abra um registro de conta existente ou crie um novo.
Confirme se uma notificação de formulário semelhante à seguinte mensagem aparece por cinco segundos:
<Your Name>: Your JavaScript code in action!
Esta etapa confirma que o formulário carrega o recurso da Web e chama o manipulador de eventos Example.formOnLoad.
Configurar sobrescritas locais
Você só precisa selecionar uma pasta de overrides na primeira vez que usar Local Overrides em um perfil do navegador Microsoft Edge.
Com o formulário de conta aberto, pressione F12 ou Ctrl+Shift+I para abrir o DevTools.
Selecione a ferramenta Fontes .
No painel Navegador, selecione a guia Substituições. Se a guia não estiver visível, selecione Mais guias e selecione Substituições.
Selecione Selecionar pasta para sobrescritas.
Selecione a pasta vazia que você criou para substituições de configuração e, em seguida, selecione Selecionar Pasta.
Quando DevTools solicitar acesso completo à pasta, selecione Permitir.
Confirme se Habilitar Substituições Locais está selecionado.
Habilitar o bypass da rede para service workers
Important
Habilitar o Bypass para rede garante que as substituições locais de DevTools sejam aplicadas, impedindo que os Service Workers forneçam respostas em cache. Se você não fizer essa etapa, as substituições locais não funcionarão com aplicativos baseados em modelo.
Em DevTools, selecione a guia Aplicativo .
Se a guia não estiver visível, selecione + (Mais guias) e, em seguida, Application.
No painel de navegação esquerdo, selecione Service Workers.
Selecione Ignorar para a rede para forçar solicitações a ignorar o Service Worker e usar a rede.
Atualize a página para aplicar a alteração.
Criar uma substituição forçada para o recurso da Web
Use a ferramenta Network para localizar o arquivo JavaScript carregado pelo formulário da conta:
Selecione a ferramenta Rede .
Se a atividade de rede não estiver sendo registrada, selecione Registrar log de rede.
Atualize a página para que o formulário carregue o recurso da Web novamente.
Na caixa Filtrar , comece a digitar o nome do recurso da Web, como:
example_form-script.js.Na lista de solicitações de rede, clique com o botão direito do mouse
example_form-script.jse, em seguida, selecione Substituir conteúdo.
Selecione a ferramenta Fontes e, em seguida, selecione a guia Substituições .
Expanda as pastas que o DevTools criou e selecione
example_form-script.js.
O DevTools copia o recurso da Web para a pasta Overrides. Um ponto roxo no ícone de arquivo indica que o DevTools substituiu o recurso.
Tip
Você também pode criar a sobrescrita na guia Página na ferramenta Fontes. Encontre o recurso da Web, clique com o botão direito do mouse nele e selecione Substituir o conteúdo.
Verifique se Microsoft Edge abre a cópia local
Faça uma alteração fácil de reconhecer para que você possa confirmar se a sobrescrita está funcionando:
No editor do DevTools, localize a seguinte linha:
const message = `${currentUserName}: Your JavaScript code in action!`;Substitua-o por esta linha:
const message = `${currentUserName}: Local override in action!`;Note
Se você tentar colar o código no editor de DevTools, verá essa caixa de diálogo. Você precisa digitar
allow pastinge selecionar Permitir para continuar. Essa caixa de diálogo não será exibida se você digitar alterações diretamente.
Altere a duração da notificação de
5000para15000.Pressione Ctrl+S para salvar o arquivo local.
Atualize o formulário da conta.
Confirme se a notificação exibe a substituição local em ação! e permanece visível por 15 segundos.
A mensagem e a duração alteradas confirmam que Microsoft Edge carregou a substituição local em vez do recurso da Web publicado.
Depurar os manipuladores de eventos
Depois de confirmar que a substituição funciona, use o depurador DevTools para investigar o script.
Depurar o evento OnLoad do formulário
Na ferramenta Fontes, abra o arquivo sobrescrito
example_form-script.js.Selecione o número de linha desta instrução para definir um ponto de interrupção:
Atualize o formulário da conta.
Quando a execução do script for pausada, use o painel Escopo para inspecionar
executionContexteformContext.
Percorra a função e observe a chamada para
setFormNotification.Selecione Retomar a execução do script para continuar.
Depurar o evento OnChange do nome da conta
Defina um ponto de interrupção nesta instrução
Example.attributeOnChange:const accountName = formContext.getAttribute("name").getValue();No formulário da conta, altere o Nome da Conta e, em seguida, mova o foco para longe da coluna para disparar o evento On Change .
Quando a execução for pausada, inspecione o valor de
accountName.
Utilize um nome de conta que contenha
Contosoe percorra a função para observar como o script define os valores Site, Telefone Principal e Descrição.
Depurar o evento OnSave do formulário
Defina um ponto de interrupção na instrução
Xrm.Navigation.openAlertDialogemExample.formOnSave.Salve o registro.
Quando a execução for pausada, inspecione a pilha de chamadas para confirmar se o evento On Save do formulário chamou a função esperada.
Retome a execução do script e confirme se a caixa de diálogo de alerta é aberta.
Você pode editar e salvar o override sempre que quiser testar uma possível correção. Atualize o formulário para testar as alterações no código que são executadas quando o formulário é carregado. Acione o formulário relevante ou o evento da coluna para testar outros manipuladores de eventos. Use a ferramenta Console para examinar erros e saída de log.
Comparar a substituição forçada com o recurso da Web publicado
Para confirmar se um problema é causado por suas alterações locais:
- Na ferramenta Fontes , selecione a guia Substituições .
- Desmarque "Habilitar substituições locais".
- Atualize o formulário da conta e teste o evento novamente.
Microsoft Edge agora carrega o recurso web publicado do servidor. Selecione Ativar substituições locais e atualize o formulário para retomar usando a cópia local.
Finalizar a solução de problemas
Os arquivos de substituição local não estão conectados ao recurso da Web no Dataverse ou aos arquivos de origem da solução.
- Copie as alterações que você deseja manter do arquivo de substituição para o arquivo de origem que você usa para manter o recurso da Web.
- Use seu processo normal de desenvolvimento e implantação para atualizar e publicar o recurso Web em JavaScript.
- Teste o recurso da Web publicado com Habilitar Substituições Locais desmarcada.
- Quando você não precisar mais da configuração de sobrescrição, selecione Limpar a configuração na guia Sobrescrições.
Caution
Não trate o arquivo na pasta de substituições como o arquivo de origem para o recurso da Web. Mantenha as alterações que você deseja manter antes de limpar a configuração ou excluir arquivos de substituição local.
Solucionar problemas com sobrescritas locais
Veja a seguir os problemas que você pode encontrar ao usar Local Overrides.
O recurso da Web não aparece na ferramenta Rede
Confirme se a ferramenta Network está registrando, desmarque todos os filtros e atualize o formulário. O formulário deve carregar o recurso da Web antes de ser exibido. Confirme também se a biblioteca JavaScript foi adicionada ao formulário e se as personalizações do formulário foram publicadas.
O comando conteúdo Override não está disponível
Retorne à ferramenta Sources e confirme se você selecionou uma pasta de substituições, permitiu que o DevTools a acessasse e selecionou Habilitar Substituições Locais. Em seguida, atualize o formulário e tente novamente.
O formulário ainda usa o script publicado
Mantenha o DevTools aberto, confirme se Habilitar Substituições Locais está selecionado e verifique se o recurso da Web tem um ponto roxo na ferramenta Rede ou Fontes . Salve a substituição forçada e atualize o formulário.
Um ponto de interrupção não é atingido
Confirme se você definiu o ponto de interrupção no arquivo sobrescrito e se ele aparece habilitado. Dispare o evento associado a essa função: atualize o formulário para On Load, altere a coluna configurada para On Change ou salve o registro para On Save. Verifique também a ferramenta Console para verificar se há um erro de sintaxe que impeça o carregamento do script.