Shiny自定义UI元素中<br>被转义导致换行失效问题求助
解决Shiny中自定义HTML文本换行被转义的问题
问题根源
你当前的写法存在逻辑冗余:shiny::div生成的是Shiny标签对象,用as.character()转换时会自动转义HTML特殊字符(比如把<br>变成<br>),后续再用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
相关产品推荐
相关产品推荐

