使用Turbolink的Facebook推特按钮

时间:2013-12-27 04:06:28

标签: html ruby-on-rails facebook twitter turbolinks

我正在尝试实现2个共享按钮。 Facebook Like ButtonTwitter Share Button

fb_root = null fb_events_bound = false $ -> loadFacebookSDK() bindFacebookEvents() unless fb_events_bound bindFacebookEvents = -> $(document) .on('page:fetch', saveFacebookRoot) .on('page:change', restoreFacebookRoot) .on('page:load', -> FB?.XFBML.parse() ) fb_events_bound = true saveFacebookRoot = -> fb_root = $('#fb-root').detach() restoreFacebookRoot = -> if $('#fb-root').length > 0 $('#fb-root').replaceWith fb_root else $('body').append fb_root loadFacebookSDK = -> window.fbAsyncInit = initializeFacebookSDK $.getScript("//connect.facebook.net/en_US/all.js#xfbml=1") initializeFacebookSDK = -> FB.init appId : 'YOUR_APP_ID' channelUrl: '//WWW.YOUR_DOMAIN.COM/channel.html' status : true cookie : true xfbml : true

但是我遇到了turbolinks的问题..在查找之后我找到了interesting article

解决方案声明,通过从application.html.erb中删除初始脚本并包含以下文件将解决问题。

twttr_events_bound = false

$ ->
  bindTwitterEventHandlers() unless twttr_events_bound

bindTwitterEventHandlers = ->
  $(document).on 'page:load', renderTweetButtons
  twttr_events_bound = 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()

同样适用于Twitter Problem

{{1}}

我做到了,但由于某些原因,我的问题不会消失。有人可以帮助我做到这一点吗?

1 个答案:

答案 0 :(得分:0)

请参阅此问题Rails 4: how to use $(document).ready() with turbo-links(得票最多的答案),请尝试:

ready = ->

  ...your coffeescript goes here...

$(document).ready(ready)
$(document).on('page:load', ready)

我之前遇到了turbolink的问题,我在主页上加载了fb脚本,并按照指向另一个页面的链接,并且fb脚本没有重新加载。所以我尝试添加data-turbolink-track = false并且它有效。 希望这有帮助。