Как запустить JS Script при загрузке блестящего приложения

1

Я написал этот код для применения класса редактора в текстовом поле с id = "textBox". Для применения класса редактора требуется код javascript для запуска и поиск способа привязки javascript к событию запуска приложения (или при загрузке приложения). По сути, я хотел бы запустить js, когда приложение загружается без необходимости привязывать его к нажатию кнопки, поскольку оно в настоящее время реализовано. Я не знаю, как обращаться к событию загрузки приложения. Реализация кнопки была лучшей, с которой я мог придумать, и потратил немало времени, прежде чем спрашивать.

Обратитесь к этому вопросу за информацией о том, как запустить код.

Сообщите мне, если вам нужна дополнительная информация об этом. Был бы рад помочь. Заранее спасибо.

library(shiny) 
library(shinyjs)

if (interactive()) {
     ui <- shinyUI(
    fluidPage(
      useShinyjs(),
      tags$head(tags$title("Title"),
                tags$link(rel = "stylesheet", href = "codemirror.css"),
                tags$link(rel = "stylesheet", href = "cobalt.css"),
                tags$script(src = "codemirror.js"),
                tags$script(src = "r.js")
      ),
      actionButton("btn1","Click to see code"),
      uiOutput(outputId = "textStringToDisplay")))
     server <- function(input, output){
    output$textStringToDisplay <- renderUI(
      tags$textarea(id="textBox", name = "Feedback", paste0(sample(letters,15),collapse = "")))

    ButtonPressCounter <- 0

    observeEvent(input$btn1,
                 {
                   ButtonPressCounter <<- ButtonPressCounter + 1 # Need it to happen only once
                   if(ButtonPressCounter <= 1){
                     shinyjs::runjs(
                       'var editorR = CodeMirror.fromTextArea(textBox, {
                       mode: "r",
                       lineNumbers: true,
                       smartindent: true});
                       editorR.setOption("theme", "cobalt");
                       editorR.setSize("100%","100%");')
                   }
                 })
       }
     shinyApp(ui = ui, server = server) }
Теги:
shiny
shinyjs
codemirror

1 ответ

1

Чтобы запустить javascript-код при открытии приложения, вам не нужно помещать код в наблюдателя. Если вы замените свой сервер на следующий код, вы увидите, что в журнале будет строка "hello, this code has run."

  server <- function(input, output){
    output$textStringToDisplay <- renderUI(
      tags$textarea(id="textBox", name = "Feedback", paste0(sample(letters,15),collapse = "")))

    shinyjs::runjs(
      'console.log("hello, this code has run.");
       var editorR = CodeMirror.fromTextArea(textBox, {
                       mode: "r",
                       lineNumbers: true,
                       smartindent: true});
                       editorR.setOption("theme", "cobalt");
                       editorR.setSize("100%","100%");')
  }

Хотя следующая строка в журнале - ReferenceError: Can't find variable: CodeMirror, поэтому, я думаю, что что-то не хватает в вашем коде?

Надеюсь это поможет!

  • 1
    Ошибка ссылки из-за того, что несколько файлов javascript и css отсутствуют в папке www вашего приложения. Не могли бы вы добавить их и попробовать еще раз. Я попробовал ваше решение, и runjs не запускается автоматически. Я пробовал это раньше. Вы можете найти файлы по ссылке в вопросе выше. Спасибо!!
  • 0
    Я смог запустить JS при запуске приложения, используя следующий ответ: stackoverflow.com/a/42434168/336001

Ещё вопросы

Сообщество Overcoder
Наверх
Меню