Có cách nào để đặt vị trí cusror trong GWT RichTextArea hay không. Có phương thức setCusrorPosition() để làm như vậy trong TextArea, nhưng không phải trong RichTextArea. Có lẽ có một JavaScript nguyên gốc (được gọi từ GWT) có thể đặt vị trí con trỏ trong RichTextArea?Cách đặt vị trí con trỏ trong GWT RichTextArea
6
A
Trả lời
1
Bạn nói đúng RichTextArea không cung cấp phương thức setSelectionRange, nhưng tôi đã tạo một phương thức bằng cách sử dụng JSNI.
Dưới đây là phương pháp,
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);
}
}-*/;
Để sử dụng phương pháp nêu trên ghi bên dưới mã:
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);
Lưu ý: Hãy nhớ đặt kiểm tra xác nhận của "pos" và "chiều dài" bạn đi qua trong phương thức setSelectionRange(). Mã này đã được thử nghiệm trong IE9, FF, Chrome.
1
Không chắc chắn nếu điều này vẫn còn cần thiết, nhưng tôi đã cố gắng để có được điều này làm việc cả ngày và cuối cùng đã quản lý để hack theo cách của tôi đến một giải pháp. Điều này chỉ được thử nghiệm trong Chrome/Safari. Hy vọng nó sẽ giúp ai đó.
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);
}-*/;
Mã này đã được chỉnh sửa vào ngày 28 tháng 11 năm 2016 để sửa lỗi cú pháp nhỏ.
Các vấn đề liên quan
- 1. Cách đặt vị trí con trỏ trong UITextView
- 2. cách đặt vị trí con trỏ trong gtk -Linux, MonoDevelop
- 3. Đặt vị trí con trỏ trong Mac OS
- 4. Đặt vị trí con trỏ trong tiện ích Văn bản
- 5. Con trỏ Chuyển/Vị trí trong Vim
- 6. Đặt hoặc thay đổi vị trí dọc của con trỏ
- 7. Đặt vị trí con trỏ UITextView ở cuối văn bản
- 8. Ngăn người dùng đặt vị trí con trỏ trên UITextField
- 9. Cách lấy vị trí con trỏ trong nhật thực TextEditor
- 10. Đặt vị trí con trỏ với Visual Studio Extension
- 11. Cách tìm vị trí con trỏ trong JTextArea
- 12. Cách lấy vị trí con trỏ trong bash?
- 13. Vị trí con trỏ của EditText
- 14. ios Vị trí con trỏ UIPanGestureRecognizer
- 15. Cách đặt con trỏ: tay với GWT: nhãn
- 16. Vị trí con trỏ trong chữ viết tắt VIM
- 17. Tìm vị trí con trỏ trong hình chữ nhật
- 18. C# Thay đổi vị trí nhấn/trỏ của con trỏ?
- 19. Cách đặt vị trí con trỏ chuột trong C trên linux?
- 20. Tìm vị trí văn bản con trỏ trong JTextField
- 21. java gwt richtextarea thay đổi font-family
- 22. Vị trí con trỏ đến cuối văn bản trong uitextview và cuộn đến vị trí
- 23. Tìm vị trí con trỏ trong một Textarea
- 24. Nhận vị trí con trỏ trong UITextView trên iPhone?
- 25. Làm cách nào để đặt lại con trỏ của tôi thành vị trí mảng cụ thể?
- 26. C - khởi tạo của con trỏ, vị trí dấu
- 27. cách nhận và đặt vị trí con trỏ hiện tại của hộp văn bản WPF
- 28. Nhiều EditText - chỉ định vị trí của con trỏ
- 29. Đặt vị trí con trỏ trong ứng dụng bảng điều khiển Win32
- 30. Nhận Bàn phím Vị trí Con trỏ Bàn phím Android
Điều này không hiệu quả đối với tôi trong GWT 2.5. Nó di chuyển con trỏ nhưng nó không thể đoán trước. Tham số chiều dài ảnh hưởng đến vị trí con trỏ và lựa chọn không bao giờ là phạm vi, luôn luôn di chuyển con trỏ (không làm nổi bật). – Zip184
Một div có thể chỉnh sửa có thể được sử dụng thay cho richtextarea. –