Introdução
Instalação
Guias
- Engine
- Perfil
- Navegador
- BrowserView
- Navegação
- Conteúdo
- Menu de contexto
- DOM
- JavaScript
- Pop-ups
- Diálogos
- Downloads
- Rede
- Cache
- Cookies
- Proxy
- Autenticação
- Permissões
- Plugins
- Impressão
- Senhas
- Perfis de dados do usuário
- Cartões de crédito
- Mídia
- Zoom
- Corretor ortográfico
- Implantação
- Chromium
Resolução de problemas
- Registro
- Exceções comuns
- A aplicação não termina
- O vídeo não é reproduzido
- Não é possível iniciar sessão na conta Google
- Os dados do usuário não são armazenados
- Esquema de cores
- Falha no início
- Início lento no Windows
- Aplicação .NET que não responde
- Encerramento inesperado do processo Chromium
- Comportamento inesperado
- Fim do suporte do Windows 7/8/8.1
Migração
Diálogos
Este guia mostra como tratar os pedidos de apresentação de várias caixas de diálogo.
Por padrão, o DotNetBrowser não apresenta diálogos se utilizar o Browser
sem o BrowserView
associado. Está definido para o modo silencioso, em que todas as caixas de diálogo são fechadas automaticamente como se o usuário tivesse clicado no botão Cancelar na caixa de diálogo.
Para alterar o comportamento predefinido, registre a sua própria implementação do manipulador apropriado para uma determinada caixa de diálogo. Na sua implementação, o usuário decide como apresentar a caixa de diálogo e como fornecer os resultados ao engine. Também é possível criar e apresentar qualquer diálogo com determinados parâmetros.
Diálogos JavaScript
Alerta
A caixa de diálogo de alerta JavaScript é apresentada quando a função window.alert()
é chamada. Para tal, utilizamos o AlertHandler
.
Neste handler, você pode obter os parâmetros da caixa de diálogo, como o título, a mensagem e o texto localizado da ação “OK”.
browser.JsDialogs.AlertHandler =
new Handler<AlertParameters>(p =>
{
// Título do diálogo.
string title = p.Title;
// Mensagem do diálogo.
string message = p.Message;
// O texto localizado da ação "OK" do Handler.
string okActionText = p.OkActionText;
// Criar e apresentar a caixa de diálogo, se necessário.
/*
Retornar a execução do manipulador
assim que a caixa de diálogo tiver sido fechada.
*/
});
browser.JsDialogs.AlertHandler =
New Handler(Of AlertParameters)(Sub(p)
' Dialog title.
Dim title As String = p.Title
' Dialog message.
Dim message As String = p.Message
' O texto localizado da ação "OK" do Handler.
Dim okActionText As String = p.OkActionText
' Criar e apresentar a caixa de diálogo, se necessário.
' Retornar a execução do handler
' assim que a caixa de diálogo tiver sido fechada.
End Sub)
A execução do JavaScript será bloqueada até que a caixa de diálogo Alert seja fechada.
Confirmar
A caixa de diálogo de confirmação JavaScript é apresentada quando a função window.confirm()
é chamada. Para o efeito, utilizamos o ConfirmHandler
.
Neste handler, você pode obter os parâmetros da caixa de diálogo, como o título, a mensagem e o texto localizado das ações “Sim” e “Não”. Veja o exemplo de código abaixo:
browser.JsDialogs.ConfirmHandler =
new Handler<ConfirmParameters, ConfirmResponse>(p =>
{
// Título do diálogo.
string title = p.Title;
// Mensagem do diálogo.
string message = p.Message;
// O texto localizado da ação "OK".
string okActionText = p.OkActionText;
// O texto localizado da ação "Cancelar".
string cancelActionText = p.CancelActionText;
// Criar e apresentar a caixa de diálogo, se necessário.
// Retorna a execução do handler
// assim que o diálogo for fechado.
return ConfirmResponse.Ok();
});
browser.JsDialogs.ConfirmHandler =
New Handler(Of ConfirmParameters, ConfirmResponse)(Function(p)
' Título do diálogo.
Dim title As String = p.Title
' Mensagem do diálogo.
Dim message As String = p.Message
' O texto localizado da ação "OK".
Dim okActionText As String = p.OkActionText
' O texto localizado da ação "Cancelar".
Dim cancelActionText As String = p.CancelActionText
' Criar e apresentar a caixa de diálogo, se necessário.
' Retornar a execução do handler
' assim que a caixa de diálogo tiver sido fechada.
Return ConfirmResponse.Ok()
End Function)
A execução do JavaScript será bloqueada até que a caixa de diálogo Confirmar seja fechada.
Prompt
A caixa de diálogo de prompt do JavaScript é apresentada quando a função window.prompt()
é chamada. Para isso, utilizamos o PromptHandler
.
Neste handler, você pode obter os parâmetros da caixa de diálogo, como o título, a mensagem, o texto, o texto localizado das ações “OK” e “Cancelar”. Veja o exemplo de código abaixo:
browser.JsDialogs.PromptHandler =
new Handler<PromptParameters, PromptResponse>(p =>
{
// Título do diálogo.
string title = p.Title;
// Mensagem do diálogo.
string message = p.Message;
// O texto localizado da ação "OK".
string okActionText = p.OkActionText;
// O texto localizado da ação "Cancelar".
string cancelActionText = p.CancelActionText;
// Criar e apresentar a caixa de diálogo, se necessário.
// Retorna a execução do handler
// assim que o diálogo for fechado.
return PromptResponse.SubmitText(responseText);
});
browser.JsDialogs.PromptHandler =
New Handler(Of PromptParameters, PromptResponse)(Function(p)
' Título do diálogo.
Dim title As String = p.Title
' Mensagem do diálogo.
Dim message As String = p.Message
' O texto localizado da ação "OK".
Dim okActionText As String = p.OkActionText
' O texto localizado da ação "Cancelar".
Dim cancelActionText As String = p.CancelActionText
' Criar e apresentar a caixa de diálogo, se necessário.
' Retornar a execução do handler
' assim que a caixa de diálogo tiver sido fechada.
Return PromptResponse.SubmitText(responseText)
End Function)
A execução do JavaScript será bloqueada até que a caixa de diálogo Prompt seja fechada.
Antes do descarregamento
O evento onbeforeunload
é ativado quando a página Web está prestes a ser descarregada. Este evento permite-lhe apresentar uma mensagem numa caixa de diálogo de confirmação para informar o utilizador se pretende permanecer na página atual ou sair dela.
Para apresentar a caixa de diálogo de confirmação, utilize o endereço BeforeUnloadHandler
.
Este handler não será invocado ao fechar a instância do IBrowser
.
Neste handler, você pode obter os parâmetros da caixa de diálogo, como o título, a mensagem, o texto localizado das ações “Ficar” e “Sair”. Veja o exemplo de código abaixo:
browser.JsDialogs.BeforeUnloadHandler =
new Handler<BeforeUnloadParameters, BeforeUnloadResponse>(p =>
{
// Título do diálogo.
string title = p.Title;
// Mensagem do diálogo.
string message = p.Message;
// O texto localizado da ação "Ficar".
string stayActionText = p.StayActionText;
// O texto localizado da ação "Sair".
string leaveActionText = p.LeaveActionText;
// Criar e apresentar a caixa de diálogo, se necessário.
// ...
// A ação "Ficar" foi selecionada.
return BeforeUnloadResponse.Stay();
});
browser.JsDialogs.BeforeUnloadHandler =
New Handler(Of BeforeUnloadParameters, BeforeUnloadResponse)(Function(p)
' Título do diálogo.
Dim title As String = p.Title
' Mensagem do diálogo.
Dim message As String = p.Message
' O texto localizado da ação "Ficar".
Dim stayActionText As String = p.StayActionText
' O texto localizado da ação "Sair".
Dim leaveActionText As String = p.LeaveActionText
' Criar e apresentar a caixa de diálogo, se necessário.
' ...
A ação "Ficar" foi selecionada.
Return BeforeUnloadResponse.Stay()
End Function)
Selecionar uma cor
A caixa de diálogo pode ser apresentada quando o usuário clica no elemento input
com o tipo color
. Utilizamos o SelectColorHandler
para este efeito, tal como apresentado na amostra de código abaixo:
<input type="color" value="#ff0000">
Neste manipulador, é possível obter os parâmetros da caixa de diálogo, como a cor predefinida. Por exemplo:
browser.Dialogs.SelectColorHandler =
new Handler<SelectColorParameters, SelectColorResponse>(p =>
{
Color defaultColor = p.DefaultColor;
return SelectColorResponse.SelectColor(new Color(1, 0, 0));
});
browser.Dialogs.SelectColorHandler =
New Handler(Of SelectColorParameters, SelectColorResponse)(Function(p)
Dim defaultColor As Color = p.DefaultColor
Return SelectColorResponse.SelectColor(New Color(1, 0, 0))
End Function)
Abrir arquivo
Quando uma página Web quer que um usuário escolha um arquivo do seu dispositivo de armazenamento, o OpenFileHandler
é utilizado. Acontece quando o usuário clica no elemento input
com o tipo de arquivo
:
<input type="file" accept="image/png, image/jpeg">
Neste handler, você pode obter os parâmetros da caixa de diálogo, como o nome do arquivo predefinido, as extensões de arquivo aceitáveis e a descrição das extensões de arquivo aceitáveis. Por exemplo:
browser.Dialogs.OpenFileHandler =
new Handler<OpenFileParameters, OpenFileResponse>(parameters =>
{
// O nome do arquivo predefinido.
string defaultFileName = parameters.DefaultFileName;
// Extensões aceitáveis.
IEnumerable<string> acceptableExtensions = parameters.AcceptableExtensions;
// ...
// O arquivo fornecido deve ser aberto.
return OpenFileResponse.SelectFile(Path.GetFullPath("<path-to-selected-file>"));
});
browser.Dialogs.OpenFileHandler =
New Handler(Of OpenFileParameters, OpenFileResponse)(Function(parameters)
' O nome do arquivo predefinido.
Dim defaultFileName As String = parameters.DefaultFileName
' Extensões aceitáveis.
Dim acceptableExtensions As IEnumerable(Of String) =
parameters.AcceptableExtensions
' ...
' O arquivo fornecido deve ser aberto.
Return OpenFileResponse.SelectFile(Path.GetFullPath("<path-to-selected-file>"))
End Function)
Abrir arquivos
Quando uma página Web pede a um usuário para escolher vários arquivos do armazenamento do dispositivo, o OpenMultipleFilesHandler
é utilizado. Acontece quando o usuário clica no elemento input
com o tipo de file
e o atributo multiple
:
<input type="file" accept="image/png, image/jpeg" multiple>
Neste handler, você pode obter os parâmetros da caixa de diálogo, como o nome do arquivo predefinido, as extensões de arquivo aceitáveis e a descrição das extensões de arquivo aceitáveis. Veja o exemplo de código abaixo:
browser.Dialogs.OpenMultipleFilesHandler =
new Handler<OpenMultipleFilesParameters, OpenMultipleFilesResponse>(parameters =>
{
// Extensões aceitáveis.
IEnumerable<string> acceptableExtensions = parameters.AcceptableExtensions;
// ...
string file1 = Path.GetFullPath("<path-to-selected-file1>");
string file2 = Path.GetFullPath("<path-to-selected-file2>");
return OpenMultipleFilesResponse.SelectFiles(file1,file2);
});
browser.Dialogs.OpenMultipleFilesHandler =
New Handler(Of OpenMultipleFilesParameters,
OpenMultipleFilesResponse)(Function(parameters)
' Extensões aceitáveis.
Dim acceptableExtensions As IEnumerable(Of String) =
parameters.AcceptableExtensions
' ...
Dim file1 As String = Path.GetFullPath("<path-to-selected-file1>")
Dim file2 As String = Path.GetFullPath("<path-to-selected-file2>")
Return OpenMultipleFilesResponse.SelectFiles(file1,file2)
End Function)
Abrir uma pasta
Quando o Chromium quer que um usuário escolha uma pasta do armazenamento do seu dispositivo, o OpenDirectoryHandler
é utilizado.
Se necessário, é possível criar e apresentar uma caixa de diálogo onde o usuário pode selecionar a pasta. Quando a caixa de diálogo é fechada, a instância OpenDirectoryResponse
deve ser devolvida. Veja o exemplo de código abaixo:
browser.Dialogs.OpenDirectoryHandler =
new Handler<OpenDirectoryParameters, OpenDirectoryResponse>(parameters =>
{
// ...
string directory = Path.GetFullPath("<path-to-directory>");
return OpenDirectoryResponse.SelectDirectory(directory);
});
browser.Dialogs.OpenDirectoryHandler =
New Handler(Of OpenDirectoryParameters, OpenDirectoryResponse)(Function(parameters)
' ...
Dim directory As String = Path.GetFullPath("<path-to-directory>")
Return OpenDirectoryResponse.SelectDirectory(directory)
End Function)
Salvar como PDF
Ao salvar uma página Web como um documento PDF através da caixa de diálogo Print Preview, o SaveAsPdfHandler
é utilizado.
Neste handler, é possível obter os parâmetros da caixa de diálogo, como um nome de arquivo predefinido. Veja o exemplo de código abaixo:
browser.Dialogs.SaveAsPdfHandler =
new Handler<SaveAsPdfParameters, SaveAsPdfResponse>(parameters =>
{
// ...
// O arquivo fornecido deve ser salvo.
string pdfFile = Path.GetFullPath("<path-to-file>");
return SaveAsPdfResponse.SaveToFile(pdfFile);
});
browser.Dialogs.SaveAsPdfHandler =
New Handler(Of SaveAsPdfParameters, SaveAsPdfResponse)(Function(parameters)
' ...
' O arquivo fornecido deve ser salvo.
Dim pdfFile As String = Path.GetFullPath("<path-to-file>")
Return SaveAsPdfResponse.SaveToFile(pdfFile)
End Function)
Selecionar um certificado de cliente
Quando o Chromium quer que o usuário selecione um certificado SSL do cliente a partir da lista de certificados disponíveis, o SelectCertificateHandler
é utilizado.
Neste handler, é possível obter os parâmetros da caixa de diálogo, tais como o título da caixa de diálogo, a mensagem e a lista de certificados disponíveis. Veja o exemplo de código abaixo:
browser.SelectCertificateHandler =
new Handler<SelectCertificateParameters, SelectCertificateResponse>(p =>
{
// O título da caixa de diálogo.
string title = p.Title;
// A mensagem do diálogo.
string message = p.Message;
// Certificados SSL disponíveis.
IEnumerable<Certificate> certificates = p.Certificates;
// ...
// O último certificado da lista foi selecionado.
return SelectCertificateResponse.Select(p.Certificates.Count() - 1);
});
browser.SelectCertificateHandler =
New Handler(Of SelectCertificateParameters, SelectCertificateResponse)(Function(p)
' O título da caixa de diálogo.
Dim title As String = p.Title
' A mensagem do diálogo.
Dim message As String = p.Message
' Certificados SSL disponíveis.
Dim certificates As IEnumerable(Of Certificate) = p.Certificates
' ...
O último certificado da lista foi selecionado.
Return SelectCertificateResponse.Select(p.Certificates.Count() - 1)
End Function)
Abrir uma aplicação externa
Quando o usuário navega para um URL com o esquema associado à aplicação instalada no sistema operacional, o Chromium tenta abrir a ligação nessa aplicação externa. O OpenExternalAppHandler
é utilizado para determinar se a ligação deve ser aberta na aplicação externa ou não.
Neste handler, você pode obter os parâmetros da caixa de diálogo, tais como o título localizado, a mensagem e o texto para as ações “Abrir…” e “Cancelar”.
Por exemplo, eis como cancelar a abertura da ligação sem apresentar quaisquer diálogos:
browser.Dialogs.OpenExternalAppHandler =
new Handler<OpenExternalAppParameters, OpenExternalAppResponse>(p =>
{
return OpenExternalAppResponse.Cancel();
});
browser.Dialogs.OpenExternalAppHandler =
New Handler(Of OpenExternalAppParameters, OpenExternalAppResponse)(Function(p)
Return OpenExternalAppResponse.Cancel()
End Function)