Известна ли проблема с Internet Explorer / IE11, который не обрабатывает блестящий / jquery? - PullRequest
1 голос
/ 30 сентября 2019

У меня есть приложение 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")
...