javascript - 为什么 console.log 不是 Shiny for R 中的函数?

标签 javascript r d3.js shiny

我包括JavaScriptShinys ui.R像这样:

tags$body(tags$script(src="someJs.js"))

在我的someJs.js内我有一个函数

function someFunc1() {
    ....;
}

... some more code ...

console.log(variable1);

console.log位于函数 soemFunc1() 之外外部 。 当我启动应用程序并查看控制台时,我得到

console.log() is not a function.

这是为什么?

我还加载d3在头上tags$head(tags$script(src="d3.v3.min.js")) 。 当我尝试 d3.select...在控制台中,我也得到了

d3 is not a function.

但是,我使用d3在我的应用程序中进行样式设置。

什么是Shinyjs 一起做。是否有一个对象可以将所有东西附加到其上?!

这是一个示例,易于重现。

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) {

})

创建一个www文件夹位于 server.R 的同一目录中和ui.R并保存 js文件名为 test.js包含以下内容:

console.log("This will cause error")

现在,继续打开控制台。 它说

console.log() is not a function

尝试在浏览器的控制台中输入 d3 。它说

d3 is not a function.

最佳答案

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 不是 Shiny for R 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39500299/

相关文章:

r - 日历热图俄罗斯方 block 图表

r - 顺序神经网络

javascript - 如何从 JSON 文件向 D3 js sunburst 图添加颜色?

javascript - D3.JS 时序折线图,带实时数据,可平移缩放

javascript - 是什么让网格线可见?

javascript - instagram api - 仅从客户端授权检索用户 ID/用户名?

javascript - 如何在 HTML 中使用 Js Controller 中的变量

javascript - 如何在标题外部显示一个部分或一个 div,恰好在粘性菜单下?

asp.net - 在重用和逻辑封装方面使用 ASP.NET 构建 JavaScript UI 代码的最佳方式?

r - 从文本字符串中获取字符串的唯一计数