Ниже приведен минимальный пример моей ошибки:

library(shiny)

run_with_enter <- '
$(function() {
var $els = $("[data-proxy-click]");
$.each(
$els,
function(idx, el) {
var $el = $(el);
var $proxy = $("#" + $el.data("proxyClick"));
$el.keydown(function (e) {
if (e.keyCode == 13) {
$proxy.click();
}
});
}
);
});
'

ui1 <- function(){
  tagList(
    div(id = "login",
        fluidPage(
          textInput("uid", "Username"),
          tagAppendAttributes(
            passwordInput("pwd", "Password"),
            `data-proxy-click` = "Login"
          ),
          br(),
          actionButton("Login", "Log in", class = "btn-success"),
          htmlOutput("login_attempt")
          )),
    tags$style(type="text/css", "#login {font-size:10px;   text-align: left;position:absolute;top: 40%;left: 50%;margin-top: -100px;margin-left: -150px;}")
  )}

ui = (htmlOutput("page"))




server <- function(input, output, session) {

  observeEvent(input$Login, {
    cat("Login attempted \n")
  })

  output$page <- renderUI({
    div(class="outer",do.call(bootstrapPage,c(tags$br(tags$script(HTML(run_with_enter))),ui1())))
  })

}

shinyApp(ui, server)

Когда приложение запущено, в верхнем левом углу появляется текст «br», но все остальное работает нормально. Я изолировал проблему до фрагмента кода: tags$br(tags$script(HTML(run_with_enter))

Но я не знаю, как решить эту проблему. Я могу заменить тег "br" на любой допустимый тег HTML (например, "head"), и текст в верхнем левом углу будет заменен новым тегом.

0
Lorenzo M 8 Дек 2018 в 00:20

1 ответ

Лучший ответ

Скорее, чем

c(tags$br(tags$script(HTML(run_with_enter))), ui1())

У вас должно быть

list(tags$br(tags$script(HTML(run_with_enter))), ui1())

Функция c() удаляет атрибуты из объектов, чего вы не хотите в данном случае. Сравните tags$br() и c(tags$br())

1
MrFlick 7 Дек 2018 в 21:28