You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JS代码存入RCloud资产簿并在Shiny中调用?

我来帮你搞定这个问题!核心问题出在你调用JS资产的方式不对——你用了R专属的代码执行方法来处理JS,还把R变量名当作URL给浏览器请求,这肯定行不通。下面是完整的解决步骤:

1. 先把JS文件正确上传到RCloud资产簿

  • 先从tinymce.cachefly.net/4.0/tinymce.min.js下载JS文件到本地
  • 打开你的RCloud资产笔记本(也就是代码里assetsNotebook对应的那个笔记本),点击资产上传按钮,把下载好的文件传上去,命名为tinymce.js

2. 修正资产获取与Shiny调用代码

你之前用source(textConnection(tinymce.fn.source))是完全错误的,这个函数是用来运行R代码的,JS代码根本不能这么处理。正确的做法是获取JS内容后,直接嵌入到Shiny的<script>标签里:

# 从RCloud资产簿获取JS文件内容
tinymce_js_content <- rcloud.get.asset("tinymce.js", notebook = assetsNotebook)

# 在Shiny的UI部分嵌入JS代码
fluidRow(
  singleton(tags$head(tags$script(HTML(tinymce_js_content)))),
  column(12, offset = 0, hr(), h4('Side Panel Text'), uiOutput("editor1"))
)

3. 别忘了初始化TinyMCE编辑器

光加载JS文件还不够,得初始化编辑器实例才能用。在你的Shiny Server部分加上这段代码:

output$editor1 <- renderUI({
  tagList(
    # 创建编辑器对应的文本框
    tags$textarea(id = "my_editor", rows = 10, placeholder = "在这里输入内容..."),
    # 初始化TinyMCE编辑器
    tags$script(HTML("
      tinymce.init({
        selector: '#my_editor',
        # 这里可以加你需要的配置,比如插件、工具栏
        plugins: 'advlist autolink lists link image charmap print preview',
        toolbar: 'undo redo | bold italic | alignleft aligncenter | bullist numlist | link'
      });
    "))
  )
})

为啥之前的方法不行?

  • source(textConnection(...)):这个函数是用来执行R代码的,JS代码不是R代码,运行这个只会报错或者毫无效果。
  • tags$script(src ="tinymce.fn.source"):浏览器会把tinymce.fn.source当成一个网页地址去请求,但这只是你R里的一个变量名,浏览器根本找不到这个资源,所以必须直接把JS代码嵌入到script标签里。

内容的提问来源于stack exchange,提问作者user8272537

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:44:19