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

Shiny自定义UI元素中<br>被转义导致换行失效问题求助

解决Shiny中自定义HTML文本换行被转义的问题

问题根源

你当前的写法存在逻辑冗余:shiny::div生成的是Shiny标签对象,用as.character()转换时会自动转义HTML特殊字符(比如把<br>变成&lt;br&gt;),后续再用htmltools::HTML()也无法还原已经转义的内容,导致换行失效。

两种可行解决方案

  • 方案一:直接构建完整HTML字符串
    跳过Shiny标签函数,直接用htmltools::HTML()生成目标HTML,避免转义问题:

    htmltools::HTML(paste0('<div style="color: green; font-size: 80px;">Test <br> Test2</div>'))
    
  • 方案二:使用Shiny的标签函数生成换行
    用htmltools::tags$br()替代字符串<br>,作为独立标签传入shiny::div,这样渲染时会正确解析为换行:

    shiny::div(
      style = paste0("color: green; font-size:", 80, "px"),
      "Test",
      htmltools::tags$br(),
      "Test2"
    )
    

补充说明

当你把HTML标签(比如<br>)作为普通字符串传入Shiny标签函数时,Shiny会默认将其视为文本内容进行转义,防止XSS风险。只有使用专门的标签函数(如tags$br())或直接通过htmltools::HTML()传入完整HTML字符串,才能让浏览器正确解析这些标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:17:11