我正在尝试使用Twitter共享按钮来使用Rails 4应用程序+ Turbolinks。
在我看来,我有:
<a href="https://twitter.com/share" class="twitter-share-button" data-lang="en" data-text="<%= @article.title %>" data-via="<%= t('twitter_user') %>">Tweet</a>
我的app / assets / javascripts /目录中还有一个 twitter.js.coffee 文件:
class @Twitter
eventsBound = false
@load: ->
Twitter.loadTwitterSDK()
Twitter.bindEvents() unless Twitter.eventsBound
@bindEvents: ->
if typeof Turbolinks isnt 'undefined' and Turbolinks.supported
$(document).on('page:load', Twitter.renderTweetButtons)
Twitter.eventsBound = true
@renderTweetButtons: ->
$('.twitter-share-button').each ->
button = $(this)
button.attr('data-url', document.location.href) unless button.data('url')?
button.attr('data-text', document.title) unless button.data('text')?
@loadTwitterSDK: ->
$.getScript("//platform.twitter.com/widgets.js")
Twitter.load()
当我硬刷新页面时出现按钮但导航时消失(可能是由于Turbolinks)。我可能需要继续调用renderTweetButtons函数,但我不确定如何。
任何帮助表示赞赏!谢谢:))
答案 0 :(得分:1)
问题是我在@renderTweetButtons中遗失了twttr.widgets.load()
,记录为here。这就是现在的完整文件:
class @Twitter
eventsBound = false
@load: ->
Twitter.loadTwitterSDK()
Twitter.bindEvents() unless Twitter.eventsBound
@bindEvents: ->
if typeof Turbolinks isnt 'undefined' and Turbolinks.supported
$(document).on('page:load', Twitter.renderTweetButtons)
Twitter.eventsBound = true
@renderTweetButtons: ->
$('.twitter-share-button').each ->
button = $(this)
button.attr('data-url', document.location.href) unless button.data('url')?
button.attr('data-text', document.title) unless button.data('text')?
twttr.widgets.load()
@loadTwitterSDK: ->
$.getScript("//platform.twitter.com/widgets.js")
Twitter.load()
解决了这个问题。
答案 1 :(得分:0)
而不是:
Twitter.load()
尝试:
$(document).ready(Twitter.load())
$(document).on('page:load', Twitter.load())
答案 2 :(得分:0)
这对我有用:
将提供的javascript代码段替换为指向platform.twitter.com/widgets.js的外部脚本代码。
<body>
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://example.org" data-size="large">Tweet</a>
<script src="//platform.twitter.com/widgets.js"></script>
</body>
来源here