早些时候,我仅将Sharrre用于每页一个按钮的设置,并且效果很好。但是,我不得不更改它,现在我有4组按钮,并且data-text和data-url值未显示在facebook弹出窗口中-而是从实际的链接页面加载了文本,这不会打扰我,如果它不是来自显示“ Contact usNameEmail ..”等隐藏形式的话,它将与twitter一起使用,并像应该显示的那样先显示data-text值,然后显示data-url。
我使用的系统几乎类似于Sharrre示例2(http://sharrre.com/example2.html),现在的代码是:
的HTML
<div class="share-buttons" data-url="MY URL" data-text="MY TEXT"></div>
和jQuery
$('.share-buttons').each(function() {
$(this).sharrre({
share: {
twitter: true,
facebook: true
},
template: '<div class="share-icon-holder"><a href="#" class="facebook"><img src="fb.png" /></a><a href="#" class="twitter"><img src="twitter.png" /></a></div><div class="share-text"><img src="share.png" /></div>',
enableHover: false,
enableTracking: false,
render: function(api, options){
$(api.element).on('click', '.twitter', function(event) {
event.preventDefault();
api.openPopup('twitter');
});
$(api.element).on('click', '.facebook', function(event) {
event.preventDefault();
api.openPopup('facebook');
});
}
});
});
因此,我页面上的html部分有4次,我添加了.each函数试图解决此问题,但没有任何效果。任何提示或建议来解决这个问题?
这是问题的一个小提琴:http://jsfiddle.net/b54sc/
最佳答案
我自己为此找到了解决方案。但是,如果还有其他想法,请与我们分享!感谢@CBroe指向正确的方向。
最佳做法是使用Open Graph元标记,但对我而言这是不可能的,因为我的网站是一页网站,所以所有内容都在同一页面上。而且由于meta标签需要位于html的HEAD中,因此这不适合我,因为我需要四个不同的url和标题。
但是在浏览元标记解决方案时,我发现了另一个相当简单的解决方案。
因此,Sharrre使用了已弃用的Facebook的sharer.php。您不赞成使用它,因为它仍然不需要使用app_id,因此它仍然可以使用,并且很常见。但是它发生了变化:它在标题的url中不接受“ t”参数,因此这就是我的数据文本无法正常工作的原因。并且有一个解决方案。
这是我找到的页面:
http://ar.zu.my/how-to-really-customize-the-deprecated-facebook-sharer-dot-php/
稍微更改url就可以了。标题部分需要为“ p [title]”,而不仅仅是“ t”。并且还有其他参数要使用。
修罗的解决方案
Sharrre使用了不再起作用的旧方法,我只是在第325行的sharrre.js文件中更改了弹出创建功能。
从
window.open("http://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent((opt.buttons.facebook.url !== '' ? opt.buttons.facebook.url : opt.url))+"&t="+opt.text+"", "", "toolbar=0, status=0, width=900, height=500");
至
window.open("http://www.facebook.com/sharer/sharer.php?s=100&p[url]="+encodeURIComponent((opt.buttons.facebook.url !== '' ? opt.buttons.facebook.url : opt.url))+"&p[title]="+opt.text+"", "", "toolbar=0, status=0, width=900, height=500");
我不知道这个解决方案能用多长时间,因为Facebook可以随时更改它,但现在就可以!
另一种方法是使用Facebook对话框,但这需要app_id。