有没有办法在 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);
}
}-*/;
要使用上述方法,请编写以下代码:
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);
注意:请记住将您传递的“pos”和“length”的验证检查放入 setSelectionRange() 方法中。
此代码已在 IE9、FF、Chrome 中测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)