我使用 twitter 和 facebook 的社交分享按钮。将这些 div 转换为按钮的 javascript 不会显示,除非它是我加载的第一页,或者除非我刷新页面。换句话说,如果我点击一个链接,我很确定 turbolinks 不会触发脚本来显示按钮。
如何修改 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.coffee
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,所以我可以毫无问题地做到这一点
例子.js.coffee
$(document).ready ->
/* do stuff */