簡體   English   中英

Vaadin RichTextArea動態滾動到底部

[英]Vaadin RichTextArea dynamically scroll to bottom

我有一個來自Vaadin的基本RichTextArea,其中刪除了工具欄。

普通的TextArea具有setCursorPosition函數,而RichTextArea沒有。

我需要HTML格式,這就是為什么我不使用TextArea的原因。

如果沒有辦法動態滾動到底部,是否應該使用一個元素代替?

我正在使用Vaadin 7.7.10

這就是我創建和插入元素的方式

textArea = new RichTextArea("Console");
textArea.addStyleName("no-toolbar-top");
textArea.addStyleName("no-toolbar-bottom");

您可以創建滾動到富文本區域底部的JavaScriptExtension。

創建擴展

擴展需要一個Java類,該類公開可以從視圖中調用的方法,並聲明JavaScript文件,並在其中添加滾動代碼。

本示例使用RTF區域的ID進行滾動。

@JavaScript("richtextarea-extension.js")
public class ScrollRichTextAreaExtension extends AbstractJavaScriptExtension {
    public ScrollRichTextAreaExtension(UI ui) {
        extend(ui);
    }

    public void scrollToBottom(RichTextArea richTextArea) {
        callFunction("scrollToBottom", richTextArea.getId());
    }
}

JavaScript文件可以放在src / main / resources下。 該文件可以在路徑src / main / resource / com / mika / richtextarea / richtextarea-extension.js中

請注意,Java包和類名是此JavaScript文件第一行的一部分。

window.com_mika_richtextarea_ScrollRichTextAreaExtension = function() {
  var connector = this;
  this.scrollToBottom = function(id) {
    var iframe = document.querySelector("#" + id + " iframe");
    var iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
    var scrollableContent = iframeDocument.body;
    scrollableContent.scrollTop = scrollableContent.scrollHeight;
  };
};

在用戶界面中使用擴展

每個UI對象可以注冊一次擴展:

公共類MyUI擴展UI {私有ScrollRichTextAreaExtension擴展;

@Override
protected void init(VaadinRequest vaadinRequest) {
    extension = new ScrollRichTextAreaExtension(this);
    setContent(createContent());
}

最后,您可以滾動到我的調用擴展方法的底部。 這將在瀏覽器中調用JavaScript,實際上是JavaScript代碼移動了滾動位置。

private void onScrollButtonClick(ClickEvent clickEvent) {
    extension.scrollToBottom(richTextArea);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM