[英]Why is console.log not a function in Shiny for R?
我像這樣在Shinys ui.R
包含JavaScript
:
tags$body(tags$script(src="someJs.js"))
在我的someJs.js
我有一個函數
function someFunc1() {
....;
}
... some more code ...
console.log(variable1);
所述console.log
是函數的外 soemFunc1()
當我啟動應用程序並查看控制台時,
console.log()不是函數。
這是為什么?
我還將d3
加載到頭tags$head(tags$script(src="d3.v3.min.js"))
。 當我在控制台中嘗試d3.select...
時,我也得到了
d3不是函數。
但是,我在應用程序中使用d3
進行樣式設置。
js
Shiny
做了什么。 是否有物體將所有物體附在上面?
這里舉一個例子,容易重現。
ui.R
library(shiny)
shinyUI(fluidPage(
tags$head(tags$script(src="https://d3js.org/d3.v3.min.js")),
tags$head(tags$script(src="test.js")),
mainPanel(
tags$div(id = "test", "test test test")
)
)
)
server.R
library(shiny)
shinyServer(function(input, output) {
})
在server.R
和ui.R
所在的目錄中創建一個www
文件夾,並保存一個名稱為test.js
的js
文件,其內容如下:
console.log("This will cause error")
現在,繼續打開控制台。 它說
console.log()不是函數
嘗試輸入瀏覽器d3
的控制台。 它說
d3不是函數。
console.log()
是一個JavaScript函數,因此您不能在R-Shiny中調用它並期望它在JavaScript中運行。 您必須明確告訴Shiny用JavaScript進行該調用。
由於這對我來說是相當常見的操作,因此我將其包含在軟件包Shinyjs中 ,您可以在R中調用logjs()
函數,它將輸出內容寫入javascript控制台。
例:
shinyApp(
ui = fluidPage(
shinyjs::useShinyjs() # Set up shinyjs
),
server = function(input, output) {
shinyjs::logjs("hello")
}
)
我不確定我是否完全了解您要做什么,但是如果您嘗試使用JavaScript中的console.log()
來查看JavaScript控制台中的內容,那么您應該沒有問題:
library(shiny)
ui <- shinyUI(fluidPage(
mainPanel(
tags$script(HTML(
"console.log('Here is some text');"
))
)
)
)
server <- shinyServer(function(input, output, session) {
})
# Run the application
shinyApp(ui = ui, server = server)
如果運行此程序,然后使用Chrome或RStudio的網絡瀏覽器檢查頁面,然后單擊console(控制台),它將為您提供JavaScript控制台,您將看到console.log()
函數的輸出。
如果要打印到R控制台,則必須使用服務器上的print
或cat
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.