在段落中闪烁嵌套链接会产生不需要的空白

时间:2016-08-24 20:14:38

标签: html r hyperlink shiny removing-whitespace

我正在使用一些动态生成的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函数的技巧?

谢谢..

2 个答案:

答案 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