我们正在使用TinyMceBehavior向文本区域添加富文本行为:
public class MandatoryContextTextArea extends TextArea<String> {
private static final long serialVersionUID = -7837811514253179662L;
public MandatoryContextTextArea(final String id, final IModel<String> model) {
super(id, model);
this.setOutputMarkupId(true);
this.add(new IBehavior[] { new TinyMceBehavior(CustomTinyMCETextEditorSettings.initSettings()) });
}
}
无论如何都要获取用户光标当前位于富文本区域内的位置?
我要求有一个&#39;插入&#39;按钮,当单击时,将一些文本添加到用户将光标定位的位置处的文本区域。 Wicket或TinyMceBehavior中有什么东西可以提供这个位置吗?
提前致谢。
答案 0 :(得分:0)
您将无法非常轻松地获得服务器端的光标位置,但您可以创建一个简单的按钮,使用一些JavaScript在客户端处理它。
这样的东西可能会添加到你的按钮中:
public class InsertAtCursorPositionBehaviour extends AttributeModifier
{
public InsertAtCursorPositionBehaviour(final String content, final TextArea<?> textArea)
{
super("onclick", Model.of(getInsertJavaScript(content, textArea)));
}
private static String getInsertJavaScript(final String content, final TextArea<?> textArea)
{
textArea.setOutputMarkupId(true);
final StringBuilder jsBuilder = new StringBuilder();
jsBuilder.append("tinyMCE.get('");
jsBuilder.append(textArea.getMarkupId());
jsBuilder.append("').execCommand('mceInsertContent', false, '");
jsBuilder.append(content);
jsBuilder.append("');");
return jsBuilder.toString();
}
}
字符串是要插入的内容,TextArea是tinymce文本区域。参考文本区域直接允许每页有多个。
如果要插入的内容在客户端,那么将按钮嵌入微小的mce本身可能会很好。看看您可以使用的这些自定义选项:http://www.tinymce.com/tryit/button.php