javascript - 如何使用调用 Javascript 的本机函数在 Chrome 中创建一个在 Java 中工作的粘贴按钮?
问题描述
目前,我的实现适用于 IE,但不适用于 Chrome。
我有一个标有“粘贴文本”的按钮,单击该按钮应将当前存储在剪贴板中的内容粘贴到文本框中。按钮和文本框都是在定义了以下函数的同一个 Java 类中创建的。
我有一个返回 ClickHandler 执行粘贴操作的函数。它调用原生函数 getClipboardContents() 来读取当前剪贴板数据:
ClickHandler pasteClipboardToTextBox(final CustomTextBox textBox) {
return new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
textBox.setValue(getClipboardContents());
}
};
}
以下函数使用 JS 获取剪贴板数据:
private native String getClipboardContents() /*-{
return window.clipboardData.getData('Text');
}-*/;
我可以将 ClickHandler 添加到粘贴按钮,以便在单击它时将剪贴板的内容粘贴到传递的文本框对象中:
pasteButton.addClickHandler(pasteClipboardToTextBox(myTextBox));
我知道这条线:
window.clipboardData.getData('Text')
在 Chrome 中不起作用,所以我需要一种以类似方式获取剪贴板数据的替代方法,但这在 Chrome 中有效。我听说它可以使用
e.clipboardData.getData('text/plain')
但我不确定如何让它在本机 Java 函数中工作。
任何帮助将非常感激!
解决方案
推荐阅读
- python - PX4 pythondronekit,如何移动无人机?
- tensorflow - Keras 使用预训练嵌入初始化大型嵌入层
- sql - UNION 查询按其组件单独排序
- python - 批量显示十六进制颜色代码
- python - 使用solve_bvp求解薛定谔方程
- javascript - 更改表格单元格之间的元素
- javascript - 使用 JS 完全删除特定的 blob 数据或清除所有存储的 blob 数据
- angular - Angular 5 - 缓存服务不适用于路由器链接
- c# - 查找数组中缺失的元素
- python - 如何强制/警告开发人员对待类/django模型的方式