产品经理说:分享到知乎的链接,显示的图片能不能自定义?最后,我搞定了!

1,112 阅读2分钟

这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

前言

最近在处理官网活动页的需求,产品发了一张截图,并问了一句,知乎上分享的链接,显示的图片能不能自定义。

我想了想,这不是知乎去控制显示的吗?当然,我没有马上回复,这个实现不了。没有把握的事情,肯定不会去回复的啊。才有了这篇文章,记录我找到解决方案,实现效果。

在知乎上多次尝试

首先,是在知乎上的“写文章”那里进行测试,粘贴几个链接,然后切换成卡片展示。

第一个就是产品发的那个链接

image.png

看了一下,那个链接,显示的图片是,页面中的 img 标签对应的图片。知乎将那张图片,作为卡片展示的图片。

image.png

第二个是移动端的活动页

image.png

并没有显示图片,而是显示一个 svg,可能是知乎那边没有抓取到图片。

image.png

第三个是掘金的首页地址:juejin.cn/

image.png

在首页观察了一下,那张图片,是“稀土掘金漫游指南”左边的图片。

为什么会显示这张图片呢?而不是其他图片呢?因为页面的也有不少其他图片。

审查下元素,发现这个图片,也是一个 img 标签的地址

image.png

查下相关资料

搜索“网页知乎发链接,首图抓去”,凑巧看到了网页如何控制被分享到知乎时的标题和图片? 类似的问题,看到貘大的回答,跟我测试的结果有出入。

image.png

验证下

第一种情况:纯 html 文件,demo.polyv.net/oujiale/tes…

image.png

并没有显示图片,这就印证了貘大说的,前端渲染,抓不到的情况。应该要服务器渲染之类的。所以就有了使用 php 来测试下。

第二种情况:在 php 中显示图片,demo.polyv.net/oujiale/tes…

image.png

卡片有显示图片了。

第三种情况:在 php 中有一张图片,但是它是隐藏的,demo.polyv.net/oujiale/tes…

为什么要验证这种情况呢?因为如果为了实现效果,而在页面显示一张图片的话,就会影响到页面原来的效果。所以就测试了这种情况,结果,卡片还是有显示图片的。

image.png

写到最后

网页分享到知乎时的标题,是由页面的 title 标签里面的内容来显示的。

图片,是由页面的 img 标签的图片来显示的,极大可能是页面里第一个 img src 的内容。

希望自己能够保持好奇心,相信自己有能力做得更好!

完。