3

Twitter と Facebook のソーシャル共有ボタンを使用します。これらの div をボタンに変換する JavaScript は、最初にロードするページでない限り、またはページを更新しない限り表示されません。言い換えれば、リンクをクリックすると、ターボリンクがスクリプトをトリガーしてボタンを表示することはないと確信できます。

Twitter と Facebook が提供する JavaScript を変更して、div またはリンクを共有ボタンにするにはどうすればよいですか?

Twitter.js

!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');

show.html.slim

= link_to "https://twitter.com/share", class: "twitter-share-button", data: { count: "none", url: hack_url(hack), text: hack.body, via: "GhettoLifeHack_", hashtags: "ghettolifehack" } do

同じ話ですが、Facebookの詳細はこちらです。

facebook.js.コーヒー

window.fbAsyncInit = ->
  FB.init
    appId: <%= ENV['FACEBOOK_APP_ID'] %>
    xfbml: true
    version: "v2.1"
  return

((d, s, id) ->
  app_id = <%= ENV['FACEBOOK_APP_ID'] %>

  js = undefined
  fjs = d.getElementsByTagName(s)[0]
  return  if d.getElementById(id)
  js = d.createElement(s)
  js.id = id
  js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&appId=#{app_id}&version=v2.0"

  fjs.parentNode.insertBefore js, fjs
  return  
) document, "script", "facebook-jssdk"

show.html.slim

.fb-share-button[ data-href="#{hacks_url(hack)}" data-layout="button" ]

JavaScriptを変更する必要があると確信しています。

参考までに、私はjquery-turbolinks gemを持っているので、問題なくこれを行うことができます

example.js.coffee

$(document).ready ->
  /* do stuff */
4

0 に答える 0