List icon 目录

剪贴板

本指南描述了如何在 JxBrowser 中使用剪贴板。

前提条件

剪贴板仅在安全上下文中且 Browser 处于聚焦状态时工作。

必要的权限

当使用 navigator.clipboard 对象来访问剪贴板时,Browser 需要相应的权限。默认情况下,这些必要的权限是被拒绝的。以下是如何授予这些权限的说明:

Java
Kotlin

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()
    }
})

当通过用户交互(如鼠标点击)将结果写入剪贴板时,Browser 需要 CLIPBOARD_SANITIZED_WRITE 权限。在其他情况下,Browser 需要 CLIPBOARD_READ_WRITE 权限。

使用文档命令

上述权限对 document.execCommand('copy') 无效。默认情况下,此命令是禁用的。要启用它,请运行以下代码:

Java
Kotlin

browser.settings().allowJavaScriptAccessClipboard();
browser.mainFrame().ifPresent(frame -> {
    frame.executeJavaScript("document.execCommand('copy')");
});

browser.settings.canJavaScriptAccessClipboard = true
browser.mainFrame?.executeJavaScript<Boolean>("document.execCommand('copy')")

当使用 JxBrowser API 执行相同的命令时,不需要任何设置或权限。要使用文档命令复制内容,请运行以下代码:

Java
Kotlin

browser.mainFrame().ifPresent(frame -> {
    frame.execute(EditorCommand.copy());
});

browser.mainFrame?.execute(EditorCommand.copy())