R闪亮:如何阻止滑块输入标签单击导致滚动到页面顶部



我注意到,每当您单击任何 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)

最新更新