2014-10-28 12 views
7

Chciałbym osadzić oś czasu twitter jako część Błyszczącej aplikacji. Mam odpowiedni kod urywekW jaki sposób mogę osadzić oś czasu twitter w aplikacji Shiny?

<a class="twitter-timeline" href="https://twitter.com/pssGuy/timelines/524678699061641216" 
data-widget-id="524686407298596864">Soccer</a> 

<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s) [0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> 

Stworzyłem plik twitter.js (powyżej minus tagów skryptu) i ui.R jak poniżej

library(shiny) 
shinyUI(fluidPage(

tags$head(includeScript("twitter.js")), 

titlePanel(""), 

sidebarLayout(
sidebarPanel(
), 

mainPanel(
    a("Soccer", class="twitter-timeline", href="https://twitter.com/pssGuy/timelines/524678699061641216", data-widget-id="524686407298596864") 

) 
) 
)) 

To daje błąd

ERROR: C:\Users\pssguy\Documents\R\testGoogleTwitter/ui.R:19:124: unexpected '=' 
18:  mainPanel(
19:  a("Soccer", class="twitter-timeline",  href="https://twitter.com/pssGuy/timelines/524678699061641216", data-widget-id= 

Jeśli pominąć data-widget-id = „524686407298596864”, pojawia się link, który po kliknięciu otwiera się okno przeglądarki z poprawną osi czasu

Jedno zauważyłem jest to, że skrypt podany nie jest zupełnie taka sama jak w Twitters tutorialu rozwoju https://dev.twitter.com/web/embedded-timelines

<script type="text/javascript"> 
window.twttr = (function (d, s, id) { 
var t, js, fjs = d.getElementsByTagName(s)[0]; 
if (d.getElementById(id)) return; 
js = d.createElement(s); js.id = id; js.src= "https://platform.twitter.com/widgets.js"; 
fjs.parentNode.insertBefore(js, fjs); 
return window.twttr || (t = { _e: [], ready: function (f) { t._e.push(f) } }); 
}(document, "script", "twitter-wjs")); 
</script> 

TIA

Odpowiedz

9

trzeba zacytować data-widget-id gdyż nie jest składniowo poprawny nazwa:

> make.names("data-widget-id") 
[1] "data.widget.id" 

Więc dodaje powinno działać:

library(shiny) 
runApp(list(ui = fluidPage(
    tags$head(tags$script('!function(d,s,id){var js,fjs=d.getElementsByTagName(s) [0],p=/^http:/.test(d.location)?\'http\':\'https\';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");')), 
    titlePanel(""), 
    sidebarLayout(
    sidebarPanel() 
    , mainPanel(
     a("Soccer", class="twitter-timeline" 
     , href = "https://twitter.com/pssGuy/timelines/524678699061641216" 
     , "data-widget-id" = "524686407298596864") 
    ) 
) 
) 
, server = function(input, output, session){ 

} 
) 
) 

enter image description here