Letzte Woche habe ich auf Rails 5 aktualisiert, die Turbolinks 5.0 verwendet. Ich habe das folgende Skript die Facebook-Like-Button mit Turbolinks 3.0 zu laden:Turbolinks 5.0 und Facebook SDK
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/nl_NL/all.js#xfbml=1")
initializeFacebookSDK = ->
FB.init
appId : 'YOUR_APP_ID'
channelUrl: '//WWW.YOUR_DOMAIN.COM/channel.html'
status : true
cookie : true
xfbml : true
Mit Turbolinks 5.0 auf der Schaltfläche zeigt nur, wenn die Seite neu geladen wird. Als ich mir diesen Fehler nicht die Seite neu zu laden und klicken Sie einfach auf einem Link erhalten:
Blocked a frame with origin "https://www.facebook.com" from accessing a frame with origin "http://localhost:3000". The frame requesting access has a protocol of "https", the frame being accessed has a protocol of "http". Protocols must match.
Wer weiß, wie dieses Problem beheben?
Ich brauchte nicht das ganze Skript, weil das Übersetzen der Ereignisse genug war. Vielen Dank! –