【发布时间】:2020-10-09 10:30:24
【问题描述】:
我花了很长时间,太长时间,试图使所有目录组件工作。他们采用了一些本来可以超级简单的东西,却把它变得复杂而困难。
我终于屈服并尝试将一个javascript函数复制到我的项目中,并且它使用一种简单的方法。与所有其他方法一样,该方法需要由其他一些组件启动。但是你可以用任何你想要的方式去做。
我要在这里留下的只是代码。并且希望其他人会发现这一点并使用比我更少的时间。
void copyText(String text){
Page page = UI.getCurrent().getPage();
page.executeJavaScript(
"var el = document.createElement('textarea');" +
"el.value = $0;" +
"el.setAttribute('readonly', '');" +
"el.style = {" +
" position: 'absolute'," +
" left: '-9999px'" +
"};" +
"document.body.appendChild(el);" +
"el.select();" +
"document.execCommand('copy');" +
"document.body.removeChild(el);",
text);
}
【问题讨论】:
-
您是否测试过这是否适用于 Safari?
-
我没有。我读到javascript代码应该适用于IE8以上的任何东西。明天我会测试它并返回它。据此josephkhan.me/javascript-copy-clipboard-safari,应该是和他的代码一样的逻辑,上面是一样的。
-
您在目录中制作了一个插件,对吧?是否有我不知道的复制到剪贴板的“最佳实践”?我只是希望它能帮助而不是误导其他人(如果有的话)。如果你有什么要分享的,请做。
-
如果我没记错的话,之前有一些特定于浏览器的差异,但我有一段时间没有看它了。我只记得让它在所有平台上都能正常工作并非易事。这就是我询问 Safari 的原因。我没有Mac,所以我无法自己测试。也可以使用不同的移动设备进行测试。
标签: javascript copy vaadin clipboard