微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 FireFox 中的 Vaadin 按钮复制到剪贴板

如何解决使用 FireFox 中的 Vaadin 按钮复制到剪贴板

这是 Vaadin 按钮的代码

String textTocopy = "copY ME!!!";
Button copyBtn = new Button("");
copyBtn.setButtonLayout(false,new IconSelf(VaadinIcon.copY_O),"copy"));
copyBtn.addClickListener(event -> {
          getUI().get().getPage().executeJs("navigator.clipboard.writeText(`" + textTocopy + "`);");
    Notification.show(getTranslation(PAGESTRING + "attributestoclipboard"))
});

为了复制我的自定义文本,我使用了 navigator.clipboard.writeText(...)
ChromeEdge 中有效,但在 Firefox
当我在 document.execCommand("copy") 函数中使用它时,Firefox 也阻止了 executeJS(...)

我想我需要向按钮添加一个 onClick 函数。我如何使用 Vaadin 执行此操作?

解决方法

copyBtn.getElement().executeJs("this.addEventListener('click',e => navigator.clipboard.writeText($0))",textToCopy);

请注意,强烈建议不要使用字符串连接来动态构建传递给 executeJs 的字符串,因为存在跨站点脚本漏洞的风险。这就是为什么我的建议还使用 $0 来引用单独传递的字符串。这类似于在 SQL 中使用准备好的语句。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。