首先简短说明......以下两行确保一旦我的网站在Facebook上共享,就会发布自定义图像(share-thumbnail.png)。
<meta property="og:image" content="images/share-thumbnail.png"/>
<link rel="image_src" href="<images/share-thumbnail.png" />
当我点击页面上的特定共享链接时,你能想到任何创造性的方法来覆盖这种行为吗?
E.g。我的页面上有一个<a class="special-sharing" href="#">Share with special image</a>
锚点,当点击该锚点时,我不想使用标题中定义的share-thumbnail.png。
我的想法是使用jquery来监听.special-sharing链接上的点击事件然后... preventDefault();并改变,例如我的元标记的内容attr在头部到新的图像src。然后打电话给facebook?sharer = blabla。
你会如何解决这个问题?
答案 0 :(得分:1)
(警告:我不熟悉Facebook的API,只是Javascript和网络。)
不幸的是,你不能。
虽然可以使用jQuery(或一般的Javascript)影响<meta>
和<link>
标记,但不能在当前加载的副本之外进行更改用户浏览器中的页面。当调用Facebook的链接时,将丢弃当前页面并加载Facebook的页面,然后在页面上执行自己的点击以获取og:image
,该页面仍将保留原始页面值,因为服务器上的文件没有更改。
相反,您可以设置服务器,以便通过URL自定义图像。例如,让http://www.example.com/mypage.php
生成og:image
的默认值,但http://www.example.com/mypage.php?special-image=foo.gif
会更改<meta>
标记的值。然后,您可以使用Javascript更改传递给Facebook的共享者,以便它使用指向特殊图像的特殊URL。