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);
Cookie SameSite
Foi adicionado o suporte ao atributo de cookie SameSite
.
Melhorias
- Agora a biblioteca passa nos testes JS que verificam se “
MovementX
eMovementY
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 umFrame
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 oJFXPanel
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 arquivodebug.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 oBrowserView
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 SwingBrowserView
no modo de renderização fora de tela. - O erro
NullPointerException
ao exibir JavaFXScene
com a instância incorporadaBrowserView
depois que o primaryStage
é mostrado no modo de renderização fora de tela. - O
CookieStore
não está guardando os cookies com o atributoSameSite
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 oExitMouseCallback
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, oEnterMouseCallback
não podia ser invocado porque era ignorado pelo motor Chromium. - O componente SWT
BrowserView
não está visível na abaPart
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
emSplitPane
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 oBrowser
. - O erro
IndexOutOfBoundsException
ao fechar a instância popup do SwingBrowserView
através da função JavaScriptwindow.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
eMouseEvent.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.
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.
Siga @JxBrowserTeam para obter todas as atualizações da biblioteca.
Se inscreva na nossa RSS feed para obter atualizações instantâneas sobre os novos lançamentos.