Ich schrieb diesen Code, um die Editor-Klasse auf die TextArea mit ID = "TextBox" anzuwenden. Das Anwenden der Editor-Klasse benötigt einen JavaScript-Code zum Ausführen und suchte nach einer Möglichkeit, den Javascript-Lauf an das Ereignis zum Starten der App zu binden (oder wenn die App geladen wird). Im Wesentlichen möchte ich die js laufen lassen, wenn die App geladen wird, ohne sie an einen Knopfdruck zu binden, wie es gegenwärtig implementiert wird. Ich weiß nicht, wie ich auf das App-Ladeereignis Bezug nehmen soll. Die Knopfimplementierung war die beste, die ich mir vorstellen konnte, und ich habe viel Zeit aufgewandt, bevor ich gefragt habe.Wie JS-Skript auslösen, wenn glänzende App lädt
Weitere Informationen zum Ausführen des Codes finden Sie unter this Frage.
Lassen Sie mich wissen, wenn Sie mehr Informationen dazu benötigen. Würde mich freuen, zu verpflichten. Danke im Voraus.
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) }
Der Referenzfehler liegt darin, dass einige Javascript- und CSS-Dateien nicht im www-Ordner Ihrer App vorhanden sind. Würde es Ihnen etwas ausmachen, sie hinzuzufügen und es noch einmal zu versuchen? Ich habe Ihre Lösung versucht und die Runjs laufen nicht automatisch. Ich hatte das schon mal probiert. Sie können die Dateien in dem Link in der obigen Frage finden. Vielen Dank!! –