如何解决如何在Vaadin中将文本复制到剪贴板而无需添加插件
我花了很长时间,试图使所有目录组件正常工作。他们采取了一些本来可以非常简单的方法,但使其变得复杂而困难。
我终于屈服了,试图将一个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);
}
解决方法
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);
}
只是进一步解释代码。我们需要初始化页面,然后执行简单的javascript代码。在这段代码中,我将String文本作为参数传递,并在代码中将其用作“ $ 0”。
该代码创建一个textarea,目录中的大多数插件也都可以。然后设置文本字符串,使用某种样式将其从ui中隐藏起来。然后,将textarea添加到我们的文件中,因为只允许您复制可见的值。然后选择文本,进行复制,最后删除文本区域。快速干净。
您还可以添加以下行:
el.setSelectionRange(0,99999);
在el.select()之后添加它;线。根据W3的说法,此线路的手机应该可以更好地工作,但我尚未对其进行测试。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。