公众号旧文
公众号为什么能知道你上次读到哪里了?
很多人看公众号文章时,都会遇到一个现象:
上次看一半就关掉了,过会儿再点开,页面居然能跳回上次阅读的位置。
很多人自然会觉得: 微信是不是在记录我看到了哪一段?
答案是:是的。
那你有没有想过,这是怎样做到的?
一、公众号文章其实就是一个网页
很多人可能没有意识到:
公众号文章,本质上就是一个网页。
当点开一篇文章时,手机其实是在访问一个类似这样的地址:
https
:
//mp.weixin.qq.com/s/xxxxxx
这和打开普通网站没有本质区别。
只不过这个网页是专门给微信内置浏览器看的。
而网页本身就有很多办法可以记录阅读状态。
二、网页其实能知道你滚动到了哪里
当我们在阅读文章时,其实是一直在做一件事:
不断往下滑。
网页里的 JavaScript 可以非常容易地获取到一个数据:
当前页面滚动了多少像素。
比如:
scrollTop
=
1250
px
意思是:
已经往下滑了 1250 像素。
只要记录这个值,就可以知道:
大概看到了哪一段。
三、微信会把阅读进度保存下来
接下来就简单了。
当关闭文章或者离开页面时,网页可以把这个数据保存起来。
常见的方法有几种:
1.本地存储(LocalStorage)
网页可以在手机里保存一点数据,例如:
article_id
= xxx
scroll
=
1250
下次再打开同一篇文章时,网页只要读取这个值,然后自动滚动到对应位置。
2.服务器记录
也可能是另一种方式:
当我阅读文章时,网页会悄悄发送一个请求给服务器,例如:
用户ID
文章ID
阅读进度
服务器就能知道看到了哪一段。
下次再打开时,服务器把这个数据返回给网页。
四、为什么只有公众号能做到?
有人会问:
为什么普通网页很少有这个功能,而公众号却很常见?
原因其实很简单:
微信控制了整个环境。
普通网站很难知道:
- 这个用户是谁
- 他是不是同一个人
- 他是不是换了设备
但公众号是在微信内部打开的。
微信天然就知道:
- 用户ID
- 微信账号
- 阅读记录
所以实现起来就非常容易。
五、为什么有时候又记不住?
如果你注意观察,会发现这个功能有时候会失效。
比如:
- 清理缓存
- 换手机
- 换浏览器
- 文章被修改
这通常是因为:
本地存储的数据没了。
或者:
服务器记录的进度失效了。
所以页面就只能从头开始。
六、其实很多网站也有类似功能
公众号并不是唯一会这么做的。
很多大型网站也有类似设计,比如:
- 长篇新闻网站
- 电子书网站
- 论坛帖子
原理其实都是一样的:
记录滚动位置,然后恢复滚动位置。
七、看起来像记忆,其实只是一个数字
从技术角度看,这件事非常简单。
公众号并没有真的记住你读到了哪里。
它只是记录了一个数字:
页面滚动了多少像素。
下次打开时,再把页面滚回去而已。