id = "textBox"のテキストエリアにエディタクラスを適用するためにこのコードを書いています。エディタクラスを適用するには、実行するjavascriptコードが必要で、javascriptの実行をアプリケーションの起動時(またはアプリケーションのロード時)にバインドする方法を探していました。基本的には、現在実装されているように、ボタンを押してボタンをバインドする必要なく、アプリケーションが読み込まれるときにjsを実行したいと考えています。アプリの読み込みイベントを参照する方法がわかりません。ボタンの実装は私が思いつくことができ、尋ねる前にかなりの時間を費やしていた最高でした。光沢のあるアプリケーションをロードするときにJSスクリプトをトリガーする方法
コードを実行する方法の詳細については、thisの質問を参照してください。
これ以上情報が必要な場合は教えてください。喜んで義援金をするでしょう。前もって感謝します。
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) }
参照エラーは、アプリのwwwフォルダにいくつかのjavascriptとcssファイルが存在しないためです。それらを追加して、もう一度やり直してください。私はあなたのソリューションを試してrunjsが自動的に実行されません。私は以前これを試していた。上の質問のリンクにあるファイルを見つけることができます。ありがとう!! –