Buduję błyszczącą aplikację z dynamicznie generowanym kodem HTML, która zawiera łącze w środkowym zdaniu. Niestety, jeśli używam do tego funkcji tags
, każdy element ma wokół niego przestrzeń, czy tego chcę, czy nie.Błyszczące zagnieżdżanie łącza w akapicie ma niepożądaną białą przestrzeń.
Na przykład, jeśli chciałem napisać
To mój favorite link ever!
Można by pomyśleć można zrobić to
p('This is my ', a(href = 'https://stackoverflow.com/', 'favorite link ever'), '!')
Ale to powoduje każdego elementu będącego w osobnej linii, która według specyfikacji HTML oznacza, że nie będzie miejsca świadczonych między sobą.
<p>
This is my
<a href="https://stackoverflow.com/">favorite link ever</a>
!
</p>
Która wygląda następująco (zauważ przestrzeń przed wykrzyknikiem)
To mój favorite link ever!
Czy muszę uciekać się do korzystania HTML(paste0(...))
skonstruować mój HTML, czy jest jakiś technika używając tags
funkcje, które mi brakuje?
Dzięki ..
1. Dlaczego programista Shiny korzystający z funkcji budowniczych HTML powinien dbać, jeśli wynikowy kod HTML znajduje się w jednym wierszu? Dla wszystkich zależy nam, aby cała produkcja mogła zostać zminimalizowana. 2. Nawet przy zachowaniu podziałów linii, nie widzę powodu, dla którego nie moglibyśmy mieć funkcji umieszczających dzieci w oddzielnych liniach, a niektórzy nie - "div", na przykład "p" nie. Nie sądzę, że jest to szczególnie skomplikowane lub zaskakujące. 3. Podczas korzystania z dynamicznie generowanych treści, funkcje pomocnicze w rzeczywistości generują znacznie czystszy kod, niż wklejanie jawnego kodu HTML. Te funkcje istnieją z jakiegoś powodu. –
BTW, naprawdę powinienem zrobić to żądanie funkcji, ponieważ obecnie nie ma rzeczywistej odpowiedzi. Źródło tego problemu uważam za wcześniejsze w pakiecie 'htmltools', tutaj: https://github.com/rstudio/htmltools/blob/02678ee19192f406d1aa5c360916f54df09802a1/R/tags.R#L429 –
Napisałem to jako problem: https://github.com/rstudio/htmltools/issues/92 –