-
Notifications
You must be signed in to change notification settings - Fork 531
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Feature][提案]通用化处理懒加载图片 #1108
Comments
后续有其他使用懒加载图片的站点需要适配,也可以将链接附过来,验证是否可以做通用处理。 |
okay 很棒的方式~ |
现在有相关的解决方法发布到公众可用了吗 |
此通用适配提案是对于解析模块的,需要 Kenshin 修改 |
已经作为插件(ID: 仍然存在问题:部分站点原文中的 问题页面如 :
未能提取的情况示例之一:
|
嗨,我这几天用电脑不方便,先 Mark 下,明后天回复你。🙏 |
link #1215 解决方式:
|
这么设计的原因是,希望在进入阅读模式时,能有个比较快的动效以及节省性能。 但确实没有考虑到一些诸如动态加载以及你提到的情况,我会考虑如何优化这些地方。(以及包括之前没有回复过你的几个 Issues |
基于性能考虑使用缓存是必然的,这个能理解。 |
感觉并没有太好? PS:当然简悦的效果也没太好,我一直觉得像维基这类页面是无需适配的。 😌 惰性加载,论坛类页面,Latex 类页面目前都是简悦唯有的功能。 😀 |
说明
此issue试图为简悦带来处理页面懒加载图片的通用、更好用的方式。
大致思路为针对多数网站所使用的图片懒加载方式,寻找其共通点,来针对性的解决懒加载图片问题。
实现方式:
相关链接
仿Medium
Quora, Quartz, Clicktorelease 的实现方式
原生懒加载 loading="lazy”
分析
不同站点的图片懒加载
共同点
由于以上使用的懒加载都要使用 js 来改变 img 元素内的
src
属性,以加载真实图片,而为了应对JavaScript
不可用的情况,都使用了<noscript>
来存放一个<img>
来加载图片。因此,我们有个简单的选择真实图片的方式,即使用
<noscript>
元素内的<img>
放在阅读模式下用来加载图片。我们通过几个例子可以看到,
<noscript>
元素与懒加载图片的容器<img>
是兄弟元素,或者<img>
是<noscript>
兄弟元素的子元素。因此可以用此方式来选择
$(figure noscript)
$(figure noscript).parent().find('img')
由于以上站点中,
<img>
的上级节点并非总是<figure>
,因此可以以<noscript>
元素的内容来判断:上面的代码里,
$(this).parent().empty().append(noscript);
是清空父元素,然后将<noscript>
中的元素内容追加到父元素里。若不清空父元素(要确保删除父元素内其他<img>
元素),则阅读模式中可能出现多余图片(如知乎会出现svg元素),导出的markdown里必然有多余图片。最后
此思路的执行时间一个在于提取高亮内容前,一个在后,前者需要修改原始页面内容,后者不会修改原始页面内容,但目前存在一个问题,部分页面的
<noscript>
元素会被过滤掉,无法进入高亮内容里。如:#1104 (comment) 示例页面:https://towardsdatascience.com/negative-binomial-regression-f99031bb25b4
如果在简悦提取高亮内容代码中,可以确保
<nosccipt>
标签(仅内容匹配到<img
)一定被提取到高亮内容里,则可使用此方法不修改原始页面的情况下让阅读模式能正常显示懒加载图片,且导出的markdown内图片信息也是正常的。The text was updated successfully, but these errors were encountered: