我已经实现了facebook分享链接,但是已经注意到发布的内容并不像Facebook弹出窗口中显示的那样。实际帖子中缺少标题和说明,但会显示在弹出预览中。所有发布的内容都是消息和链接。
$('body').on('click', '.social_media a', function(e) {
var loc = $(this).attr('href');
var action = $(this).attr('data-action');
var title = $(this).attr('data-title');
var desc = $(this).attr('data-desc');
var img = $(this).attr('data-img');
window.open('https://www.facebook.com/sharer/sharer.php?s=100&p[url]=' + encodeURIComponent(loc) + '&p[images][0]&p[title]=' + encodeURIComponent(title) + '&p[summary]=' + encodeURIComponent(desc), 'sharer', 'status=0,width=626,height=436, top=' + ($(window).height() / 2 - 225) + ', left=' + ($(window).width() / 2 - 313) + ', toolbar=0, location=0, menubar=0, directories=0, scrollbars=0');
});
谁能看到我做错了什么?
答案 0 :(得分:1)
我建议您使用元标记而不是将参数传递给弹出窗口。将这些标记插入您要共享的网页的head
部分:
<meta property="og:url" content="http://domain/url" />
<meta property="og:title" content="Your title" />
<meta property="og:description" content="Description" />
<meta property="og:image" content="http://image1" />
<meta property="og:image" content="http://image2" />
FB将解析它并在对话框中显示。通过这种方式,您还可以指定多个图像。
然后使用以下代码打开此对话框窗口:
var width = 626;
var height = 436;
var yourPageToShare = $(this).attr('href');
var sharerUrl = 'https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(yourPageToShare);
var l = window.screenX + (window.outerWidth - width) / 2;
var t = window.screenY + (window.outerHeight - height) / 2;
var winProps = ['width='+width,'height='+height,'left='+l,'top='+t,'status=no','resizable=yes','toolbar=no','menubar=no','scrollbars=yes'].join(',');
var win = window.open(sharerUrl, 'fbShareWin', winProps);
Here您可以阅读有关Facebook Open Graph标签的更多信息
修改强>
以下是应该有效的完整页面代码:
<!DOCTYPE html>
<html>
<head>
<meta property="og:title" content="Your title" />
<meta property="og:description" content="Your description" />
<script>
function share() {
var width = 626;
var height = 436;
var yourPageToShare = location.href;
var sharerUrl = 'https://www.facebook.com/sharer/sharer.php?u=' + encodeURIComponent(yourPageToShare);
var l = window.screenX + (window.outerWidth - width) / 2;
var t = window.screenY + (window.outerHeight - height) / 2;
var winProps = ['width='+width,'height='+height,'left='+l,'top='+t,'status=no','resizable=yes','toolbar=no','menubar=no','scrollbars=yes'].join(',');
var win = window.open(sharerUrl, 'fbShareWin', winProps);
}
</script>
</head>
<body>
<input type="button" value="Share" onclick="share();">
</body>
</html>
值得注意的是,FB可能会缓存此页面的元标记,因此您可能需要等待一段时间。
您的案例中的问题可能是因为您将元标记添加到包含链接的页面,而不是这些链接指向的页面。