Nit*_*ade 6 javascript java gwt richtextbox cursor
有没有办法在GWT RichTextArea中设置cusror位置.在TextArea中有方法setCusrorPosition(),但在RichTextArea中没有.也许有一个原生JavaScript(从GWT调用)可以在RichTextArea中设置光标位置?
你是对的,RichTextArea 没有提供 setSelectionRange 方法,但我已经使用 JSNI 创建了一个方法。
下面是方法,
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);
}
}-*/;
Run Code Online (Sandbox Code Playgroud)
要使用上述方法,请编写以下代码:
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);
Run Code Online (Sandbox Code Playgroud)
注意:请记住将您传递的“pos”和“length”的验证检查放入 setSelectionRange() 方法中。此代码已在 IE9、FF、Chrome 中测试。
| 归档时间: |
|
| 查看次数: |
2387 次 |
| 最近记录: |