这是FireFox的阅读视图源代码, 我们可以使用它来猜测为什么Stack Overflow不能正常工作。我想其他阅读视图实现可能会使用类似的标准。
与Stack Overflow冲突的阅读视图标准
有一些标准使得Stack Overflow无法在阅读视图中正常工作。
它使用的标准旨在从页面中删除注释。
有一些标准,如文本长度(300+字符为最佳候选项)、逗号和类名,都是为了删除看起来像注释的节点。
由于阅读模式是设计用来阅读博客文章的,因此这显然是有利的,但在Stack Overflow上,这可能会将大量低分节点的页面部分移除作为候选项(我的意思是...谁会在评论中使用逗号呢?它们占用了你的字符计数! 哈哈)。
阅读视图不使用语义作为指标
这让我感到惊讶,但它在做决策时不会查找语义元素,例如<main>
,<article>
等。
这对于Stack Overflow来说没有帮助,因为它们也不使用它们,但这是我立即想到的解决方法。
类名对于Stack Overflow没有帮助
然而,它确实查找指示项目可能与主题相关的类名。
负面类(我相信包括部分匹配,例如“评论”的“main-comments”)如下(这些可能会导致从可能的候选项列表中删除一个节点):
unlikelyCandidates: /-ad-|ai2html|banner|breadcrumbs|combx|comment|community|cover-wrap|disqus|extra|footer|gdpr|header|legends|menu|related|remark|replies|rss|shoutbox|sidebar|skyscraper|social|sponsor|supplemental|ad-break|agegate|pagination|pager|popup|yom-remote/i,
在该列表中,有“comment”和“share”,因此每个评论都有一个类名为“comment”,所以评论部分的得分可能很低,实际答案部分也可能由于“share edit follow close flag”部分包含一个类名为“share”而得分较低。
Stack Overflow可以更改这些类名,这可能会提高完整页面在阅读器视图中呈现的机会,但这是一种hack方法,可能不太健壮!
评论和短回答是问题所在。我提到过,元素中的文本长度和逗号的使用是确定元素是否成为页面上“主要文本”的标准。
在Stack Overflow上,评论、短答案等总是与此评分机制冲突,因此这对于Stack Overflow来说是解决阅读器视图兼容性的一个重大问题。
考虑到这一点......
解决方案是什么?
就使网站与阅读器视图兼容而言,这不是您应该积极追求的事情,这将导致糟糕的决策。
试图调整Stack Overflow以满足阅读器视图的标准最多只会导致hack,并引入可访问性问题!这里的问题是问答网站在阅读器视图下表现不佳。尝试在Reader View上使用Quora,它也无法正常工作。
为了说明我对此的思考方式,原始问题可以更改为“FireFox应该如何使其阅读器视图与问答网站兼容”,然后就会开启关于他们用来确定要显示哪些内容的标准的讨论,因为问题在于他们的实现而不是Stack Overflow/Quora(当然,Stack Overflow/Quora等并不完美!)。
相反,我可以想到几个解决方案,可以实现我认为您正在使用阅读器视图进行的可访问性功能:
自己修复
由于所有这些都似乎源于行高度的更改,因此您可以创建一个插件或
bookmarklet,以修复页面上的所有样式。
由于可读性源代码可用,因此您可以轻松调整源代码以考虑Stack Overflow特定的设计(给
<div id="mainbar"
增加额外的+200分权重,因为那是我们想要显示的容器)。
然后只需调整书签以指向具有修改过的可读性脚本的您自己的服务器,即可获得工作解决方案。
如果您决定这样做,请与社区分享,这可能会为您带来一些好的声誉,并且在简历/社交媒体配置文件等方面看起来很棒。
让Stack Overflow修复它!
更好的选择是要求Stack Overflow实施可访问性设置。Stack Overflow应该努力成为该领域的领导者,我相信对于可访问性功能的请求将得到良好的回应,并最终添加到开发路线图中。
请求添加一个可访问性设置屏幕或下拉菜单。一个很好的起点是像
用户界面选项组件这样的东西。点击“+显示首选项”,您将看到可以在网站上调整许多内容。
这样,您可以修复行高(似乎这是最初的起点,因为您使用它来调整设计以适合自己的喜好)。他们还可以实现类似于阅读器视图(“专注模式”)的简化视图。
使用此方法的另一个好处是编辑器仍然可以使用,并且您可以查看易于阅读的格式的输出。
这似乎是最佳解决方案,在像SO这样的网站上,其复杂度位于技术限制/设计考虑的低端。
阅读器视图标准系统的最终反讽
在撰写本文时,如果您在FireFox中的阅读器视图模式下查看此页面,则会看到问题标题,然后将我的答案作为主体文本。您的整个问题正文将从页面中删除。我认为这完美地概括了问题!
![screenshot of the page with the original title but my content visible as the main body text in reader mode within FireFox](https://istack.dev59.com/fVkDy.webp)