C'è un modo per impostare la posizione del cusror in GWT RichTextArea. C'è un metodo setCusrorPosition() per farlo in TextArea, ma non in RichTextArea. Forse c'è un JavaScript nativo (chiamato da GWT) che potrebbe impostare la posizione del cursore in RichTextArea?Come impostare la posizione del cursore in GWT RichTextArea
6
A
risposta
1
Hai ragione. RichTextArea non fornisce il metodo setSelectionRange, ma ne ho creato uno utilizzando JSNI.
Di seguito è il metodo,
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);
}
}-*/;
Per usare sopra il metodo di scrittura sottostante Codice:
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: ricordarsi di mettere i controlli di convalida di "pos" e "lunghezza" si sono passando nel metodo setSelectionRange(). Questo codice è stato testato in IE9, FF, Chrome.
1
Non sono sicuro che sia ancora necessario, ma ho cercato di farlo funzionare tutto il giorno e sono finalmente riuscito a raggiungere la soluzione. Questo è stato testato solo in Chrome/Safari. Spero che aiuti qualcuno.
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);
}-*/;
Questo codice è stato modificato il 28 novembre 2016 per correggere gli errori di sintassi minore.
Problemi correlati
- 1. Come impostare la posizione del cursore in UITextView
- 2. Come ottenere/impostare la posizione del cursore in Silverlight textbox?
- 3. Impedire all'utente di impostare la posizione del cursore su UITextField
- 4. TextField() Imposta posizione del cursore
- 5. Come impostare la posizione di cursore/cursore in un div in contentedabile tra due div.
- 6. Come impostare il cursore: mano con GWT: etichetta
- 7. Posso ripristinare la posizione del cursore all'inizio?
- 8. Impostare la posizione cursore/cursore alla fine del valore stringa WPF textbox
- 9. Preservare la posizione del cursore con angularjs
- 10. Impostare la posizione del mouse
- 11. posizione del cursore del mouse in Javascript?
- 12. Come trovare la posizione del cursore in una JTextArea
- 13. Come posso ottenere la posizione del cursore in un'app console?
- 14. Come ottenere la posizione del cursore in bash?
- 15. Come trovare la posizione globale del cursore del testo?
- 16. Imposta la posizione del cursore in un widget di testo
- 17. Trovare la posizione del testo del cursore in JTextField
- 18. Posizione del cursore di EditText
- 19. impedisce la posizione del cursore di "freccia su" durante la reimpostazione della posizione del cursore all'interno della casella di testo
- 20. TinyMCE perde posizione del cursore
- 21. posizione del cursore in un UITextView
- 22. Posizione pixel del cursore in UITextView
- 23. Posizione del cursore nell'abbreviazione VIM
- 24. come ottenere e impostare la posizione corrente del cursore della casella di testo WPF
- 25. Imposta posizione del cursore in Mac OS
- 26. Ottenere la posizione del cursore di UITextField in ios
- 27. Mantenere la posizione del cursore in div contenteditable
- 28. Ottenere la posizione del cursore in una UITextView su iPhone?
- 29. Ottieni e imposta la posizione del cursore con div contenteditable
- 30. Come impostare un'immagine del cursore tramite jQuery?
Questo non funziona per me in GWT 2.5. Sposta il cursore ma è imprevedibile. Il parametro length influenza la posizione del cursore e la selezione non è mai un intervallo, sposta sempre il cursore (nessuna evidenziazione). – Zip184
È possibile utilizzare un div contenteditabile invece di una richtextarea. –