Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Os navegadores possuem características e medidas de segurança que podem trazer mudanças de comportamento ao WebApp durante o uso do ERP, este documento descreve essas características, para apoia-los durante a transição.

🚨 Um bom exemplo é o TWebEngine TWebEngine, no SmartClient Desktop este componente é um Chromium embutido na aplicação, enquanto no WebApp, ele é um iframe. 🚨

...

Caso seja imprescindível para sua aplicação abrir um site com este bloqueio, pode utilizar a função ShellExecute, mais informações no link: TWebEngine:Navigate

Exemplo:

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
// 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 ) 

...

Esta também é uma medida de segurança dos navegadores, como contorno, recomendamos copiar o arquivo em questão para uma pasta temporária no Servidor através da função CpyF2Web, acessando este arquivo na sequencia, mais informações no link: TWebEngine:Navigate

Exemplo:

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
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 

Ao utilizar o TWebEngine (iframe):
Comportamento do InactiveTimeout ao digitar/navegar em uma aplicação HTML(POUI)

...

O tempo de inatividade (inactive timeout) é definido pelo administrador do ERP para garantir, que caso uma conexão fique inativa por N minutos, ela seja automáticamente encerrada.

Para o WebApp avaliar se uma rotina está realmente em uso, enquanto o usuário digita/navega em uma aplicação HTML carregada em um iframe, é necessário executar um conjunto de scripts.

Porém, por questões de segurança, um navegador só permite a execução desses scripts, quando a página carregada em um iframe possuir o mesmo protocolo+host-name+porta da página principal.

Exemplo:

Se a página principal for a http://www.totvs.com:8080/index.html

Seria possível usar um iframe apontando para http://www.totvs.com:8080/app1.php

Mas seria bloqueada a execução desses scripts, no caso de utilizar a página https://www.totvs.com:8080/pag1.html, pois o protocolo foi alterado de HTTP para HTTPS.

Neste caso, esgotado o prazo do inactive timeout, mesmo que o usuário estivesse atualizando dados no iframe, sua sessão seria interrompida.

Mais informações no link: WebEngine+InactiveTimeout


🚨 O mecanismo da Porta Multiprotocolo pode ajudar, garantindo que possam publicar sub-rotinas, respeitando o mesmo protocolo+host-name+porta, mudando apenas a rota para esta sub-rotina.

Exemplo:

Neste exemplo temos dois serviços (sub-rotinas) utilizando o mesmo caminho, cada um em sua respectiva rota, o primeiro o WebApp, o segundo o WebMonitor.

ProtocoloHost name / IPPortaRota
http://10.173.1.12:8081/webapp
http://10.173.1.12:8081/webmonitor

A importância do WebAgent para a integração com a estação de trabalho

...

O WebApp é homologado para Tablets, sem qualquer configuração adicional.

🚨 É possível também acessar o ERP a partir de um celular, porém a experiência de navegação será muito prejudicada, motivo pelo qual não é homologado.

Mais informações no link: SmartClient HTML (WebApp) - Navegadores homologados

🚨 O WebAgent não é homologado para dispositivos móveis, devido à diversas limitações de segurança impostas pelo Android/IOS.

Cadastro de Clientes sendo executado em um Galaxy S a partir do Samsung Dex

...

Mais informações no link: 2. WebApp - WebAgent#2.WebAppWebAgent-Launch

Execução de

...

rotinas sem interface através do WebAgent (parâmetro launch com --headless)

...

Informações

O parâmetro --headless está disponível a partir da versão 1.0.9 do WebAgent.

Existem algumas rotinas de processamento que não necessitam de interface (tela), é possivel executar essas rotinas utilizando em conjunto os parâmetros launch e --headless.

...

Mais informações no link: 2. WebApp - WebAgent#2.WebAppWebAgent-Headless

Image Added

Diferenças na aplicação de CSS (SetCSS) entre o WebApp e o SmartClient Desktop

...

Limite de conexões por browser

...

Todos os browsers no Os navegadores atuais de mercado possuem um limite máximo de conexões ( paralelas ) por domínio, para evitar ataques como Denial of Service.

No no caso do ERP, não serão possiveis mais novas conexões com o Servidor de Aplicação quando este limite for atingido pelo mesmo navegadoratingido.

Caso esteja utilizando no Chrome, por exemplo, o SIGAMDI, o Menu Principal irá consumir uma conexão com o domínio (Servidor), desta forma, você poderá executar (no mesmo navegador), mais 5 rotinas simultâneas do ERP,  chegando neste limite, não serão permitidas aberturas de novas rotinas.

🚨 Abrir uma sessão deste mesmo navegador em modo anônimo/privado não irá permitir novas conexões, porém, poderá utilizar um segundo navegador, respeitando seu novo limite de conexões.

Mais informações no link: Limite de conexões por browser

...

Teclas de atalho bloqueadas pelos navegadores

...

Existe Os navegadores possuem um conjunto de teclas bloqueadas pelos navegadoresproprietárias, impedindo seu uso através da função SetKey no WebApp.

🚨 Caso possua alguma customização que utiliza esses conjuntos de teclas, será necessário ajustar sua rotina.

Mais informações no link: SetKey no Webapp

Teclas de atalhoDescrição
Windows/LinuxMac
Ctrl+T⌘+tAbrir uma nova guia do navegador.
Ctrl+Shift+T ⌘+Shift+tReabrir guias fechadas anteriormente na ordem em que foram fechadas.
Ctrl+N⌘+nAbrir uma nova janela do navegador.
Ctrl+Shift+N⌘+Shift+nAbrir uma nova janela de navegação anônima.

Ctrl+Tab ou Ctrl+PgDn

⌘+Option+seta para a direita

Navegar entre as abas do navegador.

Ctrl+Shift+Tab ou Ctrl+PgUp

⌘+Option+seta para a esquerdaAcessar a guia aberta anterior
Alt+Home
Abrir a página inicial na guia atual
Ctrl+W ou Ctrl+F4⌘+wFechar a guia atual do navegador.
Ctrl+Shift+W ou Alt+F4⌘+Shift+wFechar a janela do navegador.
Alt+Espaço+n⌘+mMinimizar a janela atual
Alt+Espaço+x

Maximizar a janela atual

InactiveTimeout ao utilizar uma aplicação HTML através do componente TWebEngine

...

Porém, um iframe só permite a execução de scripts quando a página carregada nele possui o mesmo protocolo+host-name+porta da página onde se encontra este iframe.

Exemplo:

Se a página "mãe" é a http://www.totvs.com:8080/index.html

Seria possivel usar um iframe apontando para http://www.totvs.com:8080/app1.php

Mas seria bloqueada a execução de scripts no caso de utilizar a página https://www.totvs.com:8080/pag1.html, pois o protocolo foi alterado de HTTP para HTTPS.

Neste caso, esgotado o prazo do inactive timeout, mesmo que o usuário estivesse atualizando dados no iframe, sua sessão seria interrompida.

Mais informações no link: WebEngine+InactiveTimeout

WebApp em telas sensíveis ao toque

...

Mais informações no link: Telas de toque Toque (touchscreenTouchscreen) / mobile Mobile - mudança Mudança de comportamentoComportamento

Templatedocumentos