Introdução
Instalação
Guias
- Engine
- Profile
- Browser
- BrowserView
- Navegação
- Conteúdo
- DOM
- JavaScript
- Pop-ups
- Diálogos
- Downloads
- Extensões
- Rede
- Cache
- Cookies
- Proxy
- Autenticação
- Plugins
- Impressão
- Senhas
- Perfis de dados do Usuário
- Cartões de Crédito
- Mídia
- Área de transferência
- Zoom
- Corretor Ortográfico
- Implantação
- Chromium
Resolução de Problemas
Área de transferência
Este guia descreve como utilizar a área de transferência no JxBrowser.
Pré-requisitos
A área de transferência só funciona em contextos seguros e quando o navegador está em foco.
Autorizações necessárias
Ao utilizar o objeto navigator.clipboard
para acessar à área de transferência, o navegador requer permissões.
Por padrão, as permissões necessárias são negadas. Eis como concedê-las:
engine.permissions().set(RequestPermissionCallback.class, (params, tell) -> {
var type = params.permissionType();
if (type == PermissionType.CLIPBOARD_READ_WRITE
|| type == PermissionType.CLIPBOARD_SANITIZED_WRITE) {
tell.grant();
} else {
tell.deny();
}
});
engine.permissions.register(RequestPermissionCallback { params, tell ->
val type = params.permissionType()
when (type) {
PermissionType.CLIPBOARD_READ_WRITE -> tell.grant()
PermissionType.CLIPBOARD_SANITIZED_WRITE -> tell.grant()
else -> tell.deny()
}
})
Quando a escrita na área de transferência resulta de uma interação do usuário, como um clique do mouse, o browser requer
a permissão CLIPBOARD_SANITIZED_WRITE
. Em outros casos, o browser requer a permissão CLIPBOARD_READ_WRITE
.
Utilizar comandos de documentos
As permissões listadas acima não têm efeito sobre document.execCommand('copy')
.
Este comando está desativado por padrão. Para ativá-lo, execute o seguinte código:
browser.settings().allowJavaScriptAccessClipboard();
browser.mainFrame().ifPresent(frame -> {
frame.executeJavaScript("document.execCommand('copy')");
});
browser.settings.canJavaScriptAccessClipboard = true
browser.mainFrame?.executeJavaScript<Boolean>("document.execCommand('copy')")
Ao executar o mesmo comando utilizando a API JxBrowser, não são necessárias definições ou permissões. Para copiar conteúdo utilizando o comando document, execute:
browser.mainFrame().ifPresent(frame -> {
frame.execute(EditorCommand.copy());
});
browser.mainFrame?.execute(EditorCommand.copy())