O uso do JavaScript nos controles WebView2 permite personalizar aplicativos nativos para atender aos seus requisitos. Este artigo explora como usar o JavaScript no WebView2 e analisa como desenvolver usando recursos e funções avançadas do WebView2.
Antes de começar
Este artigo pressupõe que você já tenha um projeto de trabalho. Se você não tiver um projeto e quiser acompanhar, consulte Introdução ao WebView2.
Funções básicas do WebView2
Use as funções a seguir para começar a inserir o JavaScript em seu aplicativo WebView2.
É executado em cada página quando o DOM é criado. Chame esse método depois que o CoreWebView2 for inicializado.
Cenário: resultados codificados por JSON do ExecuteScript
Como o resultado de ExecuteScriptAsync é codificado por JSON, se o resultado da avaliação do JavaScript for uma cadeia de caracteres, você receberá uma cadeia de caracteres codificada por JSON e não o valor da cadeia de caracteres.
Por exemplo, o código a seguir executa um script que resulta em uma cadeia de caracteres. A cadeia de caracteres resultante inclui uma cotação no início, uma citação no final e barramentos de escape:
C#
string result = await coreWebView2.ExecuteScriptAsync(@"'example'");
Debug.Assert(result == "\"example\"");
O script retorna uma cadeia de caracteres que ExecuteScript JSON codifica para você. Se você chamar JSON.stringify do script, o resultado será codificado duplamente como uma cadeia de caracteres JSON, cujo valor é uma cadeia de caracteres JSON.
Somente as propriedades que estão diretamente no resultado são incluídas no objeto codificado por JSON; as propriedades herdadas não estão incluídas no objeto codificado por JSON. A maioria dos objetos DOM herda todas as propriedades, portanto, você precisará copiar explicitamente seus valores em outro objeto para retornar. Por exemplo:
Quando retornamos, não performance.memory vemos nenhuma de suas propriedades no resultado porque todas as propriedades são herdadas. Se, em vez disso, copiarmos valores de propriedade específicos de performance.memory em nosso próprio novo objeto para retornar, então vemos essas propriedades no resultado.
Ao executar o script por meio ExecuteScriptAsync desse script é executado no contexto global. Ele ajuda a ter seu script em uma função anônima para que todas as variáveis definidas não estejam poluindo o contexto global.
Por exemplo:
Se você executar o script const example = 10; mais de uma vez, as horas subsequentes em que você executar o script gerarão uma exceção, porque example foi definido na primeira vez que você o executou.
Se você, em vez disso, executar o script (() => { const example = 10; })(); , a example variável será definida no contexto dessa função anônima. Dessa forma, não está poluindo o contexto global e pode ser executado mais de uma vez.
Cenário: executar um arquivo de script dedicado
Nesta seção, você acessa um arquivo JavaScript dedicado do controle WebView2.
Observação
Embora escrever JavaScript em linha possa ser eficiente para comandos JavaScript rápidos, você perde temas de cor JavaScript e formatação de linha que dificultam a gravação de grandes seções de código no Visual Studio.
Para resolver o problema, crie um arquivo JavaScript separado com seu código e passe uma referência para esse arquivo usando os ExecuteScriptAsync parâmetros.
Crie um .js arquivo em seu projeto e adicione o código JavaScript que você deseja executar. Por exemplo, crie um arquivo chamado script.js.
Converta o arquivo JavaScript em uma cadeia de caracteres que é passada para ExecuteScriptAsync, colando o seguinte código depois que a página terminar de navegar:
C#
string text = System.IO.File.ReadAllText(@"C:\PATH_TO_YOUR_FILE\script.js");
Passe sua variável de texto usando ExecuteScriptAsync:
Cenário: Removendo a funcionalidade de arrastar e soltar
Nesta seção, você usa JavaScript para remover a funcionalidade de arrastar e soltar do controle WebView2.
Para começar, explore a funcionalidade atual de arrastar e soltar:
Crie um .txt arquivo para arrastar e soltar. Por exemplo, crie um arquivo chamado contoso.txt e adicione texto a ele.
Clique em F5 para compilar e executar o projeto.
Arraste e solte o contoso.txt arquivo no controle WebView2. Uma nova janela é aberta, que é o resultado do código em seu projeto de exemplo:
Em seguida, adicione código para remover a funcionalidade de arrastar e soltar do controle WebView2. Cole o seguinte código depois que o objeto CoreWebView2 for inicializado em seu código:
Tente arrastar e soltar contoso.txt no controle WebView2. Confirme se você não pode arrastar e soltar.
Cenário: Removendo o menu de contexto
Nesta seção, você remove o menu com o botão direito do mouse do controle WebView2.
Para começar, explore a funcionalidade atual do menu com o botão direito do mouse:
Clique em F5 para compilar e executar o projeto.
Clique com o botão direito do mouse em qualquer lugar no controle WebView2. O menu de contexto exibe os comandos de menu padrão com o botão direito do mouse:
Em seguida, adicione código para remover a funcionalidade do menu com o botão direito do mouse do controle WebView2.
Cole o seguinte código depois que o objeto CoreWebView2 for inicializado em seu código:
Aprenda a interoperar aplicaciones de Blazor con código de JavaScript, a usar componentes con plantilla y a controlar eventos del ciclo de vida de los componentes.