Executa a navegação para URL selecionada
O componente TWebEngine utiliza, no SmartClient Desktop, um Chromium embutido, enquanto no WebApp, ele é um iframe, isso implica em algumas mudanças de comportamento, descritas neste documento.
Sintaxe
Navigate( < cUrl > )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cUrl | caractere | Indica a URL a ser executada, em schemas como: http:// https:// ou file:// Informações importantes sobre o uso do file:// acesse aqui. | X |
Visualização de arquivos PDF
A partir do SmartClient 19.3.1.1 será possivel a visualização de arquivos PDF através do componente TWebEngine utilizando o método navigate:
Mais informações acesse: Melhoria - TWebEngine permite visualização de PDF's
Exemplo:
oWebEngine := TWebEngine():New(oModal, 0, 0, 800, 600)
cUrl := "http://site.com/documento.pdf" // Apenas ilustrativo
oWebEngine:navigate(cUrl)
WebApp | IMPORTANTE: Protocolo file://
Por motivos de segurança o browser não permite navegação para um arquivo local (file:///dir/file) dentro de um iframe, impedindo o uso deste protocolo no WebApp.
Como contorno, é possivel copiar o arquivo da estação de trabalho para uma pasta temporária no Servidor, utilizando a função CpyF2Web, acessando seu conteudo na sequência, veja o exemplo abaixo:
DEFINE DIALOG oDlg TITLE "Contorno para file://" FROM 0,0 TO 800,1200 PIXEL // Copia o arquivo da Estacao para o Servidor, retornando seu caminho // Este exemplo foi escrito para Linux, ao utilizar em Windows, // basta mudar o caminho para o arquivo, ex: "c:/dir/arquivo" cFilePath := CpyF2Web("l:/home/mansano/totvs/file.txt", .T., .F., .F., .F.) oWebEngine := TWebEngine():New(oDlg, 0, 0, 100, 100,,) oWebEngine:Align := CONTROL_ALIGN_ALLCLIENT // Executa o Navigate para o arquivo temporario no Servidor oWebEngine:navigate(cFilePath) ACTIVATE DIALOG oDlg CENTERED
WebApp | IMPORTANTE: X-Frame-Options to Deny
A maioria dos sites, mesmo o totvs.com ou google.com, impedem seu uso através de um iframe, esta é uma medida de segurança para evitar tentativas de ataques, como o Click-jacking, mais informações neste link:
https://developer.mozilla.org/pt-BR/docs/Web/HTTP/Headers/X-Frame-Options
Exemplo:
Caso haja um navigate para:
oWebEngine:navigate("https://www.google.com/")
Será apresentado o erro abaixo no console do seu navegador:
chromewebdata/:1 Refused to display 'https://www.google.com/' in a frame because it set 'X-Frame-Options' to 'sameorigin'.
Não existe contorno para essa questão, sendo atribuição do provedor (site) definir se seu conteúdo poderá ou não ser exibido através de um iframe.
Caso seja imprescindível para sua aplicação abrir um site com este bloqueio, pode utilizar a função ShellExecute.
// Exemplo de uso para Windows ShellExecute( "open", "http://www.google.com.br", "", "", 1 ) // Exemplo de uso para Linux shellExecute("Browser", "/usr/bin/firefox", "http://www.google.com.br", "/", 1 )
Exemplos
oWebEngine:navigate("http://www.site_qualquer.com.br")