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 BrowserViewassociado. 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)
Go Top