【问题标题】:Shiny nesting a link within a paragraph has unwanted whitespace在段落中嵌套链接的闪亮嵌套有不需要的空格
【发布时间】:2017-01-01 02:53:50
【问题描述】:

我正在使用一些动态生成的 HTML 构建一个闪亮的应用程序,其中包括一个在句子中间的链接。不幸的是,如果我使用 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 函数?

谢谢..

【问题讨论】:

    标签: html r hyperlink shiny removing-whitespace


    【解决方案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.为什么使用 HTML builder 函数的 Shiny 开发人员会关心生成的 HTML 是否都在一行上?对于所有我们关心的,整个输出可以被最小化。 2. 即使保留换行符,我看不出有什么理由不能让某些函数将子项放在单独的行上,而有些则不会——例如,div 会,p 不会。我不认为这特别复杂或令人惊讶。 3. 使用动态生成的内容时,辅助函数实际上生成的代码比粘贴显式 HTML 更清晰。这些功能的存在是有原因的。
    • 顺便说一句,我真的应该将此作为功能请求,因为目前没有实际答案。我相信这个问题的根源是htmltools 包的上游,这里:github.com/rstudio/htmltools/blob/…
    • 我把它写成了一个问题:github.com/rstudio/htmltools/issues/92
    【解决方案2】:

    这个问题已经被一个新特性解决了,一个叫做.noWS的参数。 Quoting Carson Sievert:

    你现在可以这样做了:

    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>
    

    有关.noWS 参数的更多信息,请访问pull request

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-16
      相关资源
      最近更新 更多