У меня есть приложение Shiny, размещенное на Shiny Server и nginx. Я использую кнопки действий и smoothjs для переключения элементов на основе идентификатора. Мое приложение работает без проблем во всех других основных браузерах: Chrome, Firefox, Edge, Safari (я еще не тестировал Opera). Он также работает в этих браузерах на нескольких операционных системах: Win 7, Win 10, Android, iPhone, Ubuntu 18.04. Тем не менее, Internet Explorer это бюст. Я только попробовал IE11, но я сомневаюсь, что другая версия будет работать. Веб-сайт загружается просто отлично, но кнопки не реагируют.
Я не уверен, что делать, чтобы проверить это. Я использовал инспектор элементов IE, и он распознает кнопку как обработчик событий и ссылается на файл jquery, который автоматически генерируется Shiny. Вот что привело меня к моему вопросу: это специфическая проблема совместимости с Internet Explorer и Shiny, или я что-то не так делаю с моим кодом светлых файлов?
library(shiny)
library(shinydashboard)
library("shinyjs")
library("tidyr")
library("dplyr")
ui <- fluidPage(
# welcome row ----
fluidRow(id = "welcome",
column(12,
h2(class = "display-4",
"Super Survey"),
p("Thank you for participating in this survey!"
),
hr(class = "my-4"),
p("Click 'Next' to get started"),
p(class = "lead",
actionButton(class = "btn btn-primary btn-lg",
"welcomenext",
"Next")
)
)),
useShinyjs(),
# questions row ----
fluidRow(id = "questions",
column(class = "card bg-light mb-3 px-0",
8,
div(id = "location",
div(class = "card-header text-white bg-dark",
h2(class="text-center",
"Where you're located")
),
div(class = "card-body",
p(class="card-text",
"Tell us where you are!."
),
# Input: Your Location ----
radioButtons(
inputId = "locationSelect",
"Select your location",
c("Location A", "Location B", "Location C"),
selected = character(0)
),
actionButton(class = "btn btn-primary btn-lg", "locationnext", "Next")
)
), # location section end
useShinyjs(),
div(id = "theQuestions",
# Input: Question1 ----
radioButtons(
inputId = "color",
"What's your favorite color?",
c("Red", "Blue", "Perriwinkle"),
selected = character(0)
),
actionButton(class = "btn btn-primary btn-lg", "submit", "Submit")
) %>% shinyjs::hidden() # theQuestions section end
) # col 8 inside questions row end
) %>% shinyjs::hidden(), # questions row end
fluidRow(id = "theEnd",
p("The end")
) %>% shinyjs::hidden() # theEnd row end
)
server <- function(input, output) {
# Hide section when next button clicked, show next section ----
observeEvent(input$welcomenext, {
shinyjs::hide("welcome")
shinyjs::toggle("questions")
})
observeEvent(input$locationnext, {
shinyjs::toggle("location")
toggle("theQuestions")
# runjs("window.scrollTo(0, 0)")
})
observeEvent(input$submit, {
shinyjs::toggle("questions")
toggle("theEnd")
runjs("window.scrollTo(0, 0)")
})
# Disable button if input missing ----
observe({
if (is.null(input$locationSelect) || input$locationSelect == "") {
shinyjs::disable("locationnext")
} else {
shinyjs::enable("locationnext")
}
})
observe({
if (is.null(input$color) || input$color == "") {
shinyjs::disable("submit")
} else {
shinyjs::enable("submit")
}
})
}
# Run the application
shinyApp(ui = ui, server = server)
Я ожидаю, что текущий раздел будет скрыти новые разделы, которые становятся видимыми при нажатии кнопки. Кроме того, кнопки должны быть отключены, если не был выбран ни один вход. С помощью Internet Explorer я даже не могу пройти первую кнопку «Далее».
РЕДАКТИРОВАТЬ: Версии пакета: блестящая 1.0, блестящая панель 0.7.1, блестящая 1.3.2. Кроме того, я только что повторно протестировал на своей рабочей машине и у меня та же проблема - он отлично работает в Chrome, но не в Internet Explorer.
РЕДАКТИРОВАТЬ 2: Разобрался. Для некоторых из моих кнопок действий, кажется, я неправильно включил type = "button". Это должно быть примерно так:
actionButton(class="btn-lg", "submit", "Submit")
Вместо этого у меня было что-то вроде этого:
actionButton(type="button", class="btn-lg", "submit", "Submit")