Iron-router似乎破坏了Facebook Javascript SDK的功能。
我想显示一个弹出窗口,通过它登录的用户可以发送私人消息给他们在Facebook上的朋友。
做完之后
window.fbAsyncInit = ->
FB.init({appId: fb_app_id, status: true, xfbml: true})我打电话给
FB.ui({method: 'send', app_id: fb_app_id, to: fb_object.fb_id, link: link, display: 'iframe'}, (response) ->
...
)这在第一次加载路由时效果很好。但是如果我转到另一个路由,然后返回到这个路由,然后尝试调用上面的FB.ui方法,它将失败:
Error
at Object.<anonymous> (http://connect.facebook.net/en_US/all/debug.js:1787:26)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:449:20)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46)
at window.FB.__w.signature (http://connect.facebook.net/en_US/all/debug.js:445:46) 是什么导致了这种情况?你是如何绕过它的?
发布于 2015-04-04 22:32:46
更好的解决方案-如果使用Iron Router (您可能应该这样做),请将以下内容添加到您的模板中:
Template.<template-name>.rendered = function() {
try {
FB.XFBML.parse();
}catch(e) {}
};请注意,这需要jQuery。
发布于 2014-05-29 12:01:17
我想通了。对于任何有这个问题的人,这里是我如何解决它的。
我把我的<div id='fb-root'></div>元素放在布局模板中。这意味着每次我切换页面或执行路由时,都会重新呈现该元素。我相信Facebook SDK会跟踪该元素,因为FB SDK只初始化一次,如果重新呈现该元素,我猜它会丢失跟踪并失败。
解决方案是将<div id='fb-root'></div>直接放在<body></body>中,这样就不会在每次执行路由时重新呈现它。
https://stackoverflow.com/questions/23904569
复制相似问题