¿Hay alguna manera de establecer la posición de cusror en GWT RichTextArea? Hay método setCusrorPosition() para hacerlo en TextArea, pero no en RichTextArea. Quizás haya un JavaScript nativo (llamado desde GWT) que podría establecer la posición del cursor en RichTextArea?Cómo establecer la posición de la curva en GWT RichTextArea
6
A
Respuesta
1
Tiene razón RichTextArea no proporciona el método setSelectionRange, pero he creado uno con JSNI.
A continuación se muestra el método,
public native void setSelectionRange(Element elem, int pos, int length) /*-{
try {
var selection = null, range2 = null;
var iframeWindow = elem.contentWindow;
var iframeDocument = iframeWindow.document;
selection = iframeWindow.getSelection();
range2 = selection.getRangeAt(0);
//create new range
var range = iframeDocument.createRange();
range.setStart(selection.anchorNode, pos);
range.setEnd(selection.anchorNode, length);
//remove the old range and add the newly created range
if (selection.removeRange) { // Firefox, Opera, IE after version 9
selection.removeRange(range2);
} else {
if (selection.removeAllRanges) { // Safari, Google Chrome
selection.removeAllRanges();
}
}
selection.addRange(range);
} catch (e) {
$wnd.alert(e);
}
}-*/;
Para el uso anterior método de escritura por debajo de código:
final RichTextArea tr = new RichTextArea();
Button b = new Button("Test");
b.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
setSelectionRange(tr.getElement(), 15, 20);
tr.setFocus(true);
}
});
RootPanel.get().add(tr);
RootPanel.get().add(b);
Nota: recuerde poner las comprobaciones de validación de "POS" y "longitud" que son pasando el método setSelectionRange(). Este código ha sido probado en IE9, FF, Chrome.
1
No estoy seguro si esto todavía es necesario, pero he estado tratando de hacerlo funcionar todo el día y finalmente he logrado abrirme camino hacia una solución. Esto solo ha sido probado en Chrome/Safari. Espero que ayude a alguien.
public static native void setCursor(Element elem, int pos, int length) /*-{
var node = elem.contentWindow.document.body;
var range = elem.contentWindow.getSelection().getRangeAt(0);
var treeWalker = $doc.createTreeWalker(node, NodeFilter.SHOW_TEXT, function(node) {
var nodeRange = $doc.createRange();
nodeRange.selectNodeContents(node);
return NodeFilter.FILTER_ACCEPT;
});
var charCount = 0;
while (treeWalker.nextNode()) {
if (charCount + treeWalker.currentNode.length > pos)
break;
charCount += treeWalker.currentNode.length;
}
var newRange = elem.contentWindow.document.createRange();
newRange.setStart(treeWalker.currentNode, 1);
newRange.setEnd(treeWalker.currentNode, 1);
var selection = elem.contentWindow.getSelection();
if (selection.removeRange) { // Firefox, Opera, IE after version 9
selection.removeRange(range);
} else if (selection.removeAllRanges) { // Safari, Google Chrome
selection.removeAllRanges();
}
selection.addRange(newRange);
}-*/;
Este código fue editado el 28 de noviembre de 2016 para corregir errores de sintaxis menores.
Cuestiones relacionadas
- 1. ¿Cómo establecer la posición en el giro?
- 2. Establecer la posición de desplazamiento
- 3. ¿Cómo establecer la posición del diálogo?
- 4. Cómo establecer la posición superior usando jquery
- 5. Qt: ¿cómo establecer la posición inicial de la ventana principal?
- 6. CSS establecer la posición de desplazamiento predeterminada
- 7. Establecer la posición absoluta de una vista
- 8. Cómo establecer la posición absoluta de los widgets en qt
- 9. ¿Cómo puedo establecer dinámicamente la posición de vista en Android?
- 10. cómo establecer la posición de desplazamiento en uiwebview
- 11. HTML generado para RichTextArea: ¿qué es #document?
- 12. Cómo establecer la posición del texto a abajo en textField
- 13. Cómo establecer la posición del cursor en UITextView
- 14. ¿Es posible establecer la posición de la imagen de UIImageView?
- 15. ¿Cómo puedo establecer la posición de desplazamiento de un UIScrollView?
- 16. Cómo establecer la posición superior = 0 después de setStatusBarHidden: ¿Sí?
- 17. Establecer la posición de intercalación en javafx.scene.control.TextArea y javafx.scene.control.TextField
- 18. Establecer la posición en un botón en Python?
- 19. Establecer la posición de la ventana con AppleScript
- 20. Cómo establecer la posición de la ventana WPF en la pantalla secundaria
- 21. Cómo puedo obtener todos los puntos en la curva CGPath o la curva cuádruple
- 22. Establecer la posición del cursor en un widget de texto
- 23. ImageView y establecer posición
- 24. Establecer la posición del cursor en Mac OS
- 25. jquery Establecer la posición del cursor en contenteditable div
- 26. Cómo establecer la posición de desplazamiento en la parte superior de una vista de lista
- 27. Posición de un punto relativo a una curva de Bezier
- 28. Cómo sombrear la región bajo la curva en matplotlib
- 29. GWT SuggestBox con marcador de posición atributo
- 30. Número de puntos en la curva elíptica
Esto no funciona para mí en GWT 2.5. Mueve el cursor pero es impredecible. El parámetro de longitud afecta la posición del cursor, y la selección nunca es un rango, siempre solo mueve el cursor (sin resaltar). – Zip184
Se podría usar un div satisfactorio en lugar de un richtextarea. –