Actualmente, mi implementación funciona en IE pero no en Chrome.
Tengo un botón con la etiqueta "Pegar texto" que, cuando se hace clic, debe pegar el contenido actualmente almacenado en el portapapeles en un cuadro de texto. Tanto el botón como el cuadro de texto se crean en la misma clase de Java en la que se definen las siguientes funciones.
Tengo una función que devuelve un ClickHandler que realiza la acción de pegar. Llama a una función nativa getClipboardContents() para leer los datos actuales del portapapeles:
ClickHandler pasteClipboardToTextBox(final CustomTextBox textBox) { return new ClickHandler() { @Override public void onClick(ClickEvent event) { textBox.setValue(getClipboardContents()); } }; }La siguiente función usa JS para obtener los datos del portapapeles:
private native String getClipboardContents() /*-{ return window.clipboardData.getData('Text'); }-*/;Puedo agregar ClickHandler al botón de pegar para que cuando se haga clic en él, pegue el contenido del portapapeles en el objeto de cuadro de texto pasado:
pasteButton.addClickHandler(pasteClipboardToTextBox(myTextBox));Soy consciente de que esta línea:
window.clipboardData.getData('Text')no funciona en Chrome, por lo que necesitaría un método alternativo para obtener los datos del portapapeles de manera similar, pero eso funciona en Chrome. He oído que es posible usar
e.clipboardData.getData('text/plain')pero no estoy seguro de cómo hacer que esto funcione en una función nativa de Java.
¡Cualquier ayuda sería muy apreciada!