Publicado em 6 de novembro de 2020

JxBrowser 7.12

Boas notícias para todos! O JxBrowser 7.12 é baseado no Chromium 84!

Fizemos algumas atualizações à API pública do JxBrowser, devido a várias alterações que geram incompatibilidade na API do Chromium 84. Por favor, veja as partes da API que foram removidas do JxBrowser, e as alternativas que sugerimos que sejam usadas em seu lugar.

Chromium 84

O Chromium foi atualizado para a versão 84.0.4147.135.

Nesta compilação do Chromium, algumas das suas funcionalidades associadas ao JxBrowser foram removidas ou alteradas, portanto, esta versão do JxBrowser introduz várias alterações significativas na API pública.

Consulte o guia de migração para esta versão para ver qual API foi alterada/removida e quais alternativas você pode utilizar.

DOM

Eventos trusted

A interface com.teamdev.jxbrowser.dom.event.Event foi expandida com o método isTrusted() que permite detectar se o evento foi gerado por uma ação do usuário ou foi criado/modificado e despachado via EventTarget.dispatchEvent().

MouseEvent: page location

A interface com.teamdev.jxbrowser.dom.event.MouseEvent foi expandida com pageLocation() que permite obter a localização do cursor do mouse no sistema de coordenadas do documento no momento em que o evento ocorreu.

KeyEvent: key codes

A funcionalidade que permite obter o código da tecla a partir do com.teamdev.jxbrowser.dom.event.KeyEvent foi redesenhada para ser semelhante ao DOM KeyboardEvent. Introduzimos o enum DomKeyCode para os códigos das chaves DOM e expandimos com.teamdev.jxbrowser.dom.event.KeyEvent com os métodos que permitem obter o código da chave DOM e uma string que representa um carácter UTF-8 associado à chave física, se este tiver uma representação impressa. Por exemplo:

document.addEventListener(EventType.KEY_PRESS, event -> {
    if (event instanceof KeyEvent) {
        KeyEvent keyEvent = (KeyEvent) event;
        DomKeyCode keyCode = keyEvent.domKeyCode();
        String character = keyEvent.character();
        System.out.println("DOM KeyEvent: keyCode=" + keyCode + ", character=" + character);
    }
}, false);

JS accessible Java classes

A API JavaScript-Java Bridge foi expandida com com.teamdev.jxbrowser.js.JsAccessibleClasses que permite dizer que as instâncias Java de tipos específicos são acessíveis a partir do JavaScript. Por exemplo:

JsAccessibleClasses.add(ArrayList.class, LinkedList.class);

Foi adicionado o suporte ao atributo de cookie SameSite.

Melhorias

  • Agora a biblioteca passa nos testes JS que verificam se “MovementX e MovementY variam nos eventos do mouse” no modo de renderização fora da tela.
  • Desde esta versão, o método Frame.isMain() não envia uma solicitação ao mecanismo Chromium para descobrir se este frame é um frame principal (top-level) no navegador ou não. Agora, essa informação é fornecida ao criar um Frame e armazenada em cache para chamadas posteriores.
  • A execução do executável do Chromium fornecido com os binários do JxBrowser Chromium agora não é permitida. Os binários do Chromium utilizados pelo JxBrowser devem ser utilizados apenas pelo JxBrowser e os usuários não devem poder executá-lo diretamente e utilizá-lo como uma aplicação normal de navegador Web.
  • A incorporação do JavaFX BrowserView nos containers que herdam o JFXPanel agora é permitida. Por exemplo:
    JFXPanel fxPanel = new MyJFXPanel();
    BrowserView view = BrowserView.newInstance(browser);
    fxPanel.setScene(new Scene(new BorderPane(view), 600, 600));
    
    private static final class MyJFXPanel extends JFXPanel {}
    
  • O Javadoc do TextFinder foi expandido com detalhes adicionais sobre como a busca de texto funciona, como ele destaca as correspondências, como a primeira correspondência é detectada, etc.
  • Por padrão, o Chromium cria o arquivo debug.log no diretório onde os binários estão localizados. Em alguns ambientes o acesso a este diretório pode ser proibido e o sistema operacional pode reportar essas tentativas. Desde esta versão, o Chromium não criará mais o arquivo debug.log e as mensagens de log correspondentes serão redirecionadas para o JxBrowser logging.
  • Agora, a compilação do Chromium usada na biblioteca é construída usando o sinalizador is_official_build=true. A compilação oficial do Chromium desativa as experimentais Study Configurations que estão desativadas nas compilações oficiais do Google Chrome. Uma dessas funcionalidades experimentais que foi ativada em versões anteriores do JxBrowser, é a Page Freezing que pode congelar a página Web e parar a execução do JavaScript. Assim, o motor Chromium utilizado pela biblioteca torna-se mais próximo das compilações oficiais do Chromium em termos da funcionalidade interna ativada/desativada.
  • A funcionalidade que aciona a Falhas de Auditoria do Windows está desativada. O problema foi causado pelo fato do Chromium ter chamado a função LogonUser() da API do Windows e ter passado uma senha vazia. Resolvemos o problema desativando a funcionalidade que tenta iniciar sessão utilizando uma senha vazia. Esta alteração não afeta qualquer outra funcionalidade do Chromium.

Problemas corrigidos

  • A página “Aw, snap” não é apresentada quando o processo de renderização do Chromium falha.
  • Renderização quebrada introduzida na versão 7.9 em JavaFX no modo de renderização fora de tela no Windows.
  • O conteúdo da Web não é exibido após ocultar e exibir o JFrame com o BrowserView incorporado no modo de renderização acelerada por hardware no Linux.
  • Os eventos de arrastar e soltar do HTML5 com dados vazios foram ignorados no modo de renderização fora de tela, o que fez com que alguns eventos HTML5 DnD não funcionassem.
  • O erro NullPointerException ao arrastar um arquivo do sistema de arquivos para a instância Swing BrowserView no modo de renderização fora de tela.
  • O erro NullPointerException ao exibir JavaFX Scene com a instância incorporada BrowserView depois que o primary Stage é mostrado no modo de renderização fora de tela.
  • O CookieStore não está guardando os cookies com o atributo SameSite não especificado.
  • O ShowContextMenuCallback não é chamado quando se clica com o botão direito do mouse no Visualizador de PDF.
  • A renderização fora de tela não funciona no Linux com a NVidia GeForce 1650 e a versão 430.64 do driver.
  • A funcionalidade JavaScript-Java Bridge não está sendo capaz de chamar um método Java marcado com a anotação @JsAccessible se existirem outros métodos com o mesmo nome.
  • Os dicionários do corretor ortográfico não estão sendo configurados quando a instância Engine está sendo executada no modo Anônimo.
  • Renderização quebrada na caixa de diálogo Pré-visualização de impressão no modo de renderização acelerada por hardware no SWT no macOS.
  • A caixa de diálogo Pré-visualização de impressão não é apresentada no modo de renderização fora de tela no SWT no macOS.
  • O menu de contexto padrão do Swing BrowserView não está visível quando se clica com o botão direito do mouse no Flash numa página Web no modo de renderização acelerada por hardware no Windows e no Linux.
  • O Browser não pode ser redimensionado para um tamanho inferior a 300px no macOS.
  • O listener de eventos DOM para EventType.DOUBLE_CLICK nunca está sendo invocado.
  • O EnterMouseCallback e o ExitMouseCallback não estão sendo chamados no modo de renderização fora de tela. No modo de renderização acelerada por hardware no Windows e no Linux, o EnterMouseCallback não podia ser invocado porque era ignorado pelo motor Chromium.
  • O componente SWT BrowserView não está visível na aba Part do Eclipse no modo de renderização fora de tela.
  • Nome de arquivo salvo por padrão incorreto ao imprimir a página Web atualmente carregada para PDF no SWT.
  • Falha na inicialização do corretor ortográfico ao escrever algum texto num campo de entrada na página Web carregada com o tráfego Chromium desativado.
  • Os cursores CSS personalizados ficaram desfocados no Windows no modo de renderização fora de tela.
  • Piscamento preto ao adicionar/remover JavaFX BrowserView em SplitPane no modo de renderização acelerada por hardware no Windows.
  • Piscamento com um retângulo preto aleatório ao mostrar/ocultar o BrowserView no modo de renderização fora de tela no Windows.
  • Os métodos marcados com a anotação @JsAccessible de um objeto Java injetado em JavaScript são chamados mais uma vez ao fechar o Browser.
  • O erro IndexOutOfBoundsException ao fechar a instância popup do Swing BrowserView através da função JavaScript window.close().
  • A chamada de retorno ShowNetErrorPageCallback não está sendo chamada ao carregar uma página Web HTTPS com um certificado SSL inválido.
  • Não é possível definir o foco para um campo de entrada HTML localizado dentro de um IFRAME com o domínio diferente no modo de renderização fora de tela.
  • O suporte do Firebase Cloud Messaging foi restaurado.
  • A funcionalidade Widevine no macOS e no Windows é reintroduzida após a versão 7.8.
  • Os atributos MouseEvent.movementX e MouseEvent.movementY devem ser diferentes para os diferentes eventos de movimento do mouse no modo de renderização fora de tela.
  • A JVM falha devido a vários erros no JNI relacionados à funcionalidade mach_port no macOS.

Baixe o JxBrowser 7.12

Por favor, compartilhe seu e-mail conosco, e nós lhe enviaremos instruções para download.

Enviando...
Por favor, verifique sua caixa de entrada.

Não foi possível enviar o e-mail. Por favor, use o link direto para baixar o JxBrowser.

Se você é um cliente registrado, não precisa fazer nada para usar esta atualização.

Se você deseja avaliar o produto, precisa de uma licença de avaliação.

Obtenha Teste Gratuito de 30 dias
Go Top