我想保持滚动条在底部每当新的内容被添加。
printText <- function() {
for(i in 1:20){
Sys.sleep(0.1)
shinyjs::html("text", paste("My text", i, "<br>"), add = TRUE)
y = i + 1
}
return(y)
}
library(shiny)
library(shinyjs)
runApp(list(
ui = shinyUI(fluidPage(
shinyjs::useShinyjs(),
titlePanel("Print consol output"),
sidebarLayout(
sidebarPanel(actionButton("go", "Go")),
mainPanel(
style = "overflow-y:scroll; max-height: 100px; position:relative;",
div(id = "text")
)
)
)),
server = shinyServer(function(input, output, session){
observeEvent(input$go, {
shinyjs::html("text", "")
y <- printText()
})
})
))
我已经找到了调用javascript的相关解决方案,但它在我的情况下不起作用。
下面是js代码:
function scrollToBottom(){
var elem = document.getElementById('text');
elem.scrollTop = elem.scrollHeight;
};
我尝试在div之前添加includeScript来调用函数,例如,includeScript(“myJSfile.js”),但它没有工作。
我做错了什么?
非常感谢。
2条答案
按热度按时间vyswwuz21#
这对我很有效:
这里的技巧是,每次更新文本输出时,我都调用Javascript函数来滚动div。让我知道这个答案是否令人费解。
yvfmudvl2#
下面是一个可接受答案的最小可重复示例,以更好地突出实现该方法绝对必要的内容。