Publicado em 8 de junho de 2016
JxBrowser 6.5
Principais alterações
Nesta atualização, nos concentramos na implementação de funcionalidades, há muito aguardadas pelos nossos clientes, como o acesso a dados da resposta HTTP (response body AJAX), suporte de vários cabeçalhos HTTP, listener de eventos de gestos, obtenção de HTML selecionado, melhor suporte de IME e diferentes idiomas de teclado e muito mais.
Atualização a partir da versão 6.4
Se você já utiliza a versão 6.4 do JxBrowser no seu projeto, não terá problemas em mudar para a 6.5 porque ela também é baseada no Chromium 49 e a sua API é compatível com a versão anterior.
Funções e melhorias
Aqui está uma visão geral detalhada dos recursos adicionados no JxBrowser 6.5:
- O método
NetworkDelegate.onDataReceived(DataReceivedParams params)
. Este método é invocado sempre que é recebido o body da resposta ou a sua parte. Isto significa que agora você pode obter os dados de cada resposta HTTP, incluindo HTML, texto simples, binários de imagem, etc. Você também pode utilizar esta funcionalidade para acessar o body da resposta AJAX. - A classe
HttpHeadersEx
. A classeHttpHeaders
(obsoleta a partir da versão 6.5) permitia obter apenas um valor de cabeçalho HTTP por nome. Ela tornava impossível obter vários valores de cabeçalho HTTP, nos casos em que o cabeçalho HTTP tem vários valores para o mesmo nome. A classeHttpHeadersEx
resolve o problema permitindo acessar a vários valores do cabeçalho HTTP com o mesmo nome. - Suporte à configuração de tamanho de papel para salvar páginas da web como documento PDF. Nas versões anteriores do JxBrowser, o tamanho do papel para esse caso era fixado no formato A4.
- Possibilidade de especificar um tamanho de papel personalizado para imprimir uma página. Agora, você pode especificar o seu próprio tamanho de papel em milímetros ou polegadas ao imprimir uma página Web.
- Funcionalidade que permite obter o HTML selecionado na página Web carregada.
- Os métodos
getContentLength()
,getCharset()
,getMimeType()
,getStatusLine()
da classeHeadersReceivedParams
. Por exemplo, para obter informações sobre o código de estado da resposta e a frase de motivo, você pode utilizar o métodogetStatusLine()
. - O método
Browser.isAudioPlaying()
Utilizando este método, é possível determinar se o áudio está sendo reproduzido no momento na página Web carregada ou não. - O método
BrowserView.setGestureEventsHandler()
. Quando registrado, te permite tratar eventos de gestos quando o modo de renderização heavyweight está ativado nas implementações JavaFX e Swing. No modo de renderização lightweight, este handler não é utilizado. - Suporte de vários monitores com diferentes fatores de escala de dispositivo no componente lightweight JavaFX
BrowserView
. Em versões anteriores do JxBrowser, se você movesse a cena/janela JavaFX com o componenteBrowserView
lightweight incorporado de uma tela regular para uma tela Retina, a renderização não seria otimizada para a tela Retina. Como resultado, obtém-se uma imagem desfocada da página Web carregada. Agora, a biblioteca detecta quando um componente é movido de uma tela para outra e atualiza parâmetros de renderização lightweight para produzir uma imagem de uma página Web com a melhor qualidade para uma tela onde o componente é apresentado nesse momento. - Suporte de diálogo para salvar arquivos Descobrimos que alguns conteúdos Flash podem exibir um diálogo para salvar arquivos que não é
suportado na implementação padrão do
DialogHandler
. Nesta atualização, corrigimos este problema, portanto, agora a caixa de diálogo Salvar Arquivo é suportada. - Suporte de todos os tipos de processos do Chromium pela geração de arquivo de despejo de memória em caso de falha. Nas versões anteriores do JxBrowser, nós gerávamos o arquivo de despejo de falhas apenas para o processo principal do Chromium.
O JxBrowser 6.5 fornece correções para os seguintes problemas:
- Motor Chromium que modifica o número máximo de arquivos abertos no processo Java no Mac OS X (ulimit -n). No Mac OS X, o processo Java
pode abrir 10240 arquivos/streams ao mesmo tempo. Notamos que quando uma instância do
Browser
é inicializada no processo Java, do o valor é alterado para 1024. A razão está no motor do Chromium que modificou o valor durante a inicialização. Agora, o motor Chromium verifica primeiro o valor inicial e o modifica apenas se for superior a 1024. - A impressão não funciona numa janela pop-up. Tratava-se de um problema de regressão após a atualização para o Chromium 49. Agora, tudo funciona perfeitamente.
- As teclas do sistema, por exemplo, Alt, Cmd, Control, Shift, são suportadas pelo teclado alemão no Mac OS X. O problema foi reproduzido apenas no modo de renderização lightweight. Corrigimos o problema e nos certificamos de que os outros teclados funcionam no Mac OS X como esperado.
- O Chromium falha com um erro de falta de memória ao salvar um documento HTML de grandes dimensões (mais de 20 MB) como um documento PDF ou ao apresentar a janela pop-up
com uma imagem de grandes dimensões no Windows. Para corrigir o problema, usamos o sinalizador do linker
/LARGEADDRESSAWARE
ao construir o JxBrowser no Windows. O mesmo sinalizador é utilizado na compilação oficial do Chromium. - Erro
"java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location"
que vem do componenteBrowserView
quando o modo de renderização heavyweight está ativado no Windows. - Erro
"IllegalArgumentException: Unsupported type: :"
ao enviar emoji através da JavaScript–Java Bridge. O problema foi causado pelo comprimento incorreto da string dos símbolos emoji no Mac OS X. - O suporte do teclado de tela em dispositivos táteis Windows 8+ foi melhorado. Descobrimos que quando o componente
BrowserView
era ativado através de um clique do mouse, o teclado da tela funcionava bem e podíamos digitar num campo de texto na página web carregada no JxBrowser. Mas quando o componenteBrowserView
era ativado através de um evento de toque, o componenteBrowserView
não recebia o foco. Como resultado, o usuário não podia digitar num campo de texto na página Web carregada utilizando o teclado da tela. Nesta atualização, o problema foi resolvido e o teclado da tela interage com o JxBrowser exatamente como com o Google Chrome. - O menu pendente não aparece no modo de tela cheia. O problema foi reproduzido no modo de renderização heavyweight. Nós corrigimos o motor Chromium para que os menus pendentes funcionem como esperado no modo de tela cheia.
- É impossível acessar os botões radio, as checkboxes e os botões ou selecioná-los através da tecla Espaço quando o IME (japonês, Pinyin) está ativo. Nas versões anteriores do JxBrowser, não atualizavamos o estado do IME quando o foco ia para o botão radio ou para checkbox. Agora, esta funcionalidade funciona exatamente como no Google Chrome.
Nos envie uma mensagem para customer-care@teamdev.com para fazer o download do JxBrowser 6.5.
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.