List icon 目录

剪贴板

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

前提条件

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

必要的权限

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

engine.permissions().set(RequestPermissionCallback.class, (params, tell) -> {
   PermissionType type = params.permissionType();
   if (type == PermissionType.CLIPBOARD_READ_WRITE) {
       tell.grant();
   } else if (type == PermissionType.CLIPBOARD_SANITIZED_WRITE) {
       tell.grant();
   } else {
       tell.deny();
   }
});
engine.permissions().set(RequestPermissionCallback { params, tell ->
   val type = params.permissionType()
   if (type == PermissionType.CLIPBOARD_READ_WRITE) {
       tell.grant()
   } else if (type == PermissionType.CLIPBOARD_SANITIZED_WRITE) {
       tell.grant()
   } else {
       tell.deny()
   }
})

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

使用文档命令

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

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

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

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