Publicado em 20 de julho de 2021
JxBrowser 7.17
Temos o prazer de apresentar o JxBrowser 7.17! Esta versão oferece suporte para os perfis Chromium, API JavaScript Promise, notificações quando o estado da conexão de rede é alterado e muitas outras melhorias e correções.
Chromium 91
O Chromium foi atualizado para a versão 91.0.4472.114.
Esta versão do Chromium inclui várias correções de segurança importantes, portanto, recomendamos que atualize para esta versão.
Algumas funcionalidades do Chromium foram removidas ou alteradas. Consulte o guia de migração para ver qual API do JxBrowser foi removida e que alternativas você pode utilizar.
Perfis
Nesta versão, expandimos a API com uma funcionalidade que permite gerenciar perfis do Chromium. Agora, a arquitetura tem a seguinte estrutura:
Cada Engine
tem um Profile
padrão que pode ser acessado via:
Profile defaultProfile = engine.profiles().defaultProfile();
Os seguintes serviços pertencem agora ao Profile
, portanto você pode gerenciar cookies, downloads, permissões, plugins, etc.
de forma independente para cada perfil:
ZoomLevels
Plugins
Proxy
Network
SpellChecker
CookieStore
HttpCache
HttpAuthCache
Downloads
Permissions
Para criar um novo perfil comum ou anônimo, utilize a seguinte API:
Profiles profiles = engine.profiles();
Profile myProfile = profiles.newProfile("MyProfile");
Profile myIncognitoProfile = profiles.newIncognitoProfile("MyIncognitoProfile");
Cada instância do Browser
tem um perfil. Para criar uma instância do Browser
para um perfil específico, utilize o seguinte procedimento:
Browser browser = profiles.defaultProfile().newBrowser();
...
Profile myProfile = profiles.newProfile("MyProfile");
Browser browser = myProfile.newBrowser();
Para manter a compatibilidade com versões anteriores, não alteramos a interface Engine
. Ela apenas atribui as suas chamadas para o perfil
padrão. Por exemplo:
Browser browser = engine.newBrowser();
// é equivalente a
Browser browser = engine.profiles().defaultProfile().newBrowser();
e
CookieStore cookieStore = engine.cookieStore();
// é equivalente a
CookieStore cookieStore = engine.profiles().defaultProfile().cookieStore();
Se você configurar o Engine
com
o diretório de dados do usuário, então todos os perfis criados
serão restaurados após o reinício da aplicação, a menos que você exclua um perfil através de Profiles.delete(Profile)
.
Note que o perfil padrão não pode ser excluído.
JS Promises
A nossa conversão automática de tipos de JavaScript para
tipos Java e vice-versa foi expandida com o suporte de
JavaScript Promise. Agora, você
pode trabalhar com Promises JavaScript através do novo tipo JsPromise
.
JsPromise promise = frame.executeJavaScript(
"new Promise(function(resolve, reject) {\n"
+ " setTimeout(function() {\n"
+ " resolve('Hello Java!');\n"
+ " }, 2000);"
+ "})");
promise.then(results -> {
System.out.println(results[0]);
return promise;
}).then(results -> {
System.out.println(results[0]);
return promise;
}).catchError(errors -> {
System.out.println(errors[0]);
return promise;
});
Estado da conexão de rede
O Chromium monitora internamente o estado da conexão à Internet. Quando a conexão à Internet é interrompida e depois restabelecida, o Chromium detecta este fato e recarrega programaticamente a página Web atualmente carregada. Nesta versão, expandimos a API com esta funcionalidade. Agora você pode receber notificações quando o estado da conexão de rede for alterado. Por exemplo:
network.on(NetworkChanged.class, e -> {
// Se o tipo de conexão for TYPE_NONE, não existe conexão.
if (e.connectionType() == ConnectionType.TYPE_NONE) {
// A conexão de rede foi interrompida. Estamos offline.
} else {
// A conexão de rede foi restaurada.
}
});
Melhorias
- O evento
NavigationFinished
foi expandido comisFragmentNavigation()
que indica se a navegação foi realizada para um fragmento dentro do mesmo documento.
Problemas corrigidos
- A janela nativa do Chromium é separada quando o JavaFX
BrowserView
é incorporado noTabPane
e oStage
é restaurado após minimizar no Linux no modo de renderização acelerada por hardware. - Falha do Chromium ao fechar o
Browser
depois de utilizar o conjunto Desktop Affinity API. - O
Browser
rouba o foco da entrada quando a janela Java é exibida no Linux no modo de renderização acelerada por hardware. - Uma tentativa de executar métodos relacionados à interface do usuário no navegador pop-up aberto por
Frame.viewSource()
causa uma falha nativa no Windows. - A falta de dados de queda do D&D dentro de uma página Web apresentada no Swing
BrowserView
no macOS. - Suporte para representações de texto personalizadas na funcionalidade Swing D&D no modo de renderização fora de tela.
Baixe o JxBrowser 7.17
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.