首页 > 解决方案 > 如何使用调用 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 函数中工作。

任何帮助将非常感激!

标签: javascriptjavagoogle-chromenativeclipboard

解决方案


推荐阅读