我注意到,每当您单击任何 R Shiny 滑块输入控件的标签时,窗口都会滚动到页面顶部。为了说明这一点,请在页面上进一步向下放置一个滑块输入(例如,在一大块文本或图表之后),然后单击其标签。页面滚动到顶部。
如何抑制此行为?我有一堆滑块供用户交互,在页面上更靠后。我不希望他们继续向下滚动只是为了与下一个滑块交互。
最小用户界面。R 重现(基于 hello 闪亮的欢迎教程):
library(shiny)
shinyUI(fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
p('nothing in sidebar')
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot"),
p('Lorem Ipsum....'), #giant text block to trigger vertical scrollbars in browser.
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
)
)
))
我以前从未意识到这一点!
看起来这种情况正在发生,因为实际的 HTML 输入元素位于页面顶部,单击标签会将您带到输入所在的位置。您看到的实际滑块是使用 javascript 创建的输入的修改版本,但 ID 为"bins"的实际 HTML 输入位于页面顶部。这有点技术性,但希望它是有意义的。
大多数其他不将原始 HTML 输入标记推送到页面顶部的闪亮输入不会发生这种情况。
在这种情况下,一个简单的解决方法是添加自己的标签并在输入中使用label = NULL
。例如:
tags$label("Number of bins:"),
sliderInput("bins",
label = NULL,
min = 1,
max = 50,
value = 30)