我正在使用一些动态生成的HTML构建一个Shiny应用程序,其中包含句子中间的链接。不幸的是,如果我使用tags
函数来执行此操作,则无论我是否需要,每个元素都有一个空格。
例如,如果我想写
这是我的favorite link ever!
有人可能认为你可以做到这一点
p('This is my ', a(href = 'https://stackoverflow.com/', 'favorite link ever'), '!')
但是这导致每个元素都在一个单独的行上,HTML规范意味着每个元素之间会有一个空格。
<p>
This is my
<a href="https://stackoverflow.com/">favorite link ever</a>
!
</p>
看起来像这样(注意感叹号前面的空格)
这是我的favorite link ever!
我是否必须使用HTML(paste0(...))
构建我的HTML,或者是否有一些使用我缺少的tags
函数的技巧?
谢谢..
答案 0 :(得分:1)
我认为你必须使用粘贴。否则嵌套将不会像预期的那样工作。
div(p('hi'),p('what up'),p(HTML(paste0('This is my ',a(href = 'https://stackoverflow.com/', 'favorite link ever'),'!'))))
结果:
<div>
<p>hi</p>
<p>what up</p>
<p>This is my <a href="https://stackoverflow.com/">favorite link ever</a>!</p>
</div>
你不希望所有人都在同一条线上。
从帮助:命名参数成为属性,位置参数成为子项。
有时候不是孩子的位置论证会更复杂;并且可能不会像自己构建它一样简单,灵活和强大。
答案 1 :(得分:0)
此问题已通过一项新功能(名为which resulted in: https://vimeo.com/356240684
的参数)解决。 Quoting Carson Sievert:
您现在可以这样做:
.noWS
产生
p('This is my ', a(href = 'https://stackoverflow.com/', 'favorite link ever', .noWS = "outside"), '!', .noWS = c("after-begin", "before-end"))
有关<p>This is my <a href="https://stackoverflow.com/">favorite link ever</a>!</p>
参数的更多信息,请访问pull request。