摘要
我正在寻找可以创建网页的标准,并且[相当]确定它会出现在 Firefox阅读器中 如果需要,请查看。
有些网站有此选项,有些则没有。一些文本较多的文本没有此文本的选项。堆栈溢出 instance只显示问题,而不是Reader中的任何答案 图。
问题
我已经将我的Firefox从38.0.1升级到38.0.5并找到了一个名为ReaderView的新功能 - 这是一种覆盖,可以消除" page clutter"并使文本更容易阅读。 Readerview位于地址栏的右侧,作为某些页面上的可点击图标。
这很好,但从编程的角度来看,我想知道"读者如何看待"工作,它适用于哪个页面的标准。我已经对Mozilla Firefox网站进行了一些探索,但没有明确的答案(我找到的任何类型的编程答案),我当然用Google搜索/ Binged这个,这只是带有对Firefox插件的引用 - 这不是插件但是新版Firefox的主要部分。
我假设readerview使用HTML5并且会提取<article>
内容,但事实并非如此,因为它适用于维基百科,它似乎没有使用<article>
或类似的HTML5标签,而是读取视图提取某些<div>
并单独显示它们。此功能适用于某些HTML5页面 - 例如维基百科 - 但不适用于其他页面。
如果有人对Firefox ReaderView的实际操作方式有任何想法以及网站开发人员如何使用此操作,您能分享吗?或者如果你能找到这些信息的位置,你能否指出我正确的方向 - 因为我找不到这个。
答案 0 :(得分:52)
文本周围至少需要一个<p>
标记,您希望在阅读器视图中看到,并且文本中的7个字中至少包含516个字符。
例如,这将触发ReaderView:
<body>
<p>
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789
123456789 123456
</p>
</body>
上的示例
答案 1 :(得分:28)
今天上午阅读gitHub代码,过程是页面元素以可能性顺序列出 - <section>
,<p>
,<div>
,<article>
at列表的顶部(即最有可能)。
然后,基于诸如逗号计数和适用于节点的类名之类的内容,给予这些“节点”中的每一个“得分”。这是一个多方面的过程,其中为文本块添加分数,但对于无效部分或语法,分数似乎也减少了。 “节点”的子部分中的分数反映在整个节点的分数中。也就是说,父元素包含所有较低元素的分数。
此分数值决定HTML页面是否可以在Firefox中“页面查看”。
我不清楚分数值是由Firefox还是由可读性功能设置的。
Javascript确实不是我的强项,我认为其他人应该查看Richard(https://github.com/mozilla/readability)提供的链接,看看他们是否能提供更全面的答案。
我没有看到但预计看到的内容是根据<p>
或<div>
(或其他)相关标签中的文字内容量得分。
对此问题或答案的任何改进,请分享!
编辑:
当页面文本内容有效时,<div>
元素中的<figure>
或<p>
标记(HTML5)中的图像似乎会保留在Reader View中。
答案 2 :(得分:19)
我关注了Martin对Readability.js GitHub repository的链接,并查看了源代码。这就是我的成就。
该算法适用于段落标记。首先,它试图识别页面中绝对不是内容的部分 - 比如表单等 - 并删除它们。然后它遍历页面上的段落节点并根据内容丰富度分配一个分数:它为它们提供诸如逗号数量,内容长度等内容的点数。请注意,立即丢弃少于25个字符的段落。
然后得分&#34;冒泡&#34; DOM树:每个段落都会将其中的一部分添加到其所有父节点中 - 直接父级将其全部分数添加到其总数中,祖父母只有一半,一个曾祖父母的三分之一等等。这允许算法识别可能是主要内容部分的更高级元素。
虽然这只是Firefox的算法,但我的猜测是,如果它适用于Firefox,它也适用于其他浏览器。
为了使这些Reader View算法适用于您的网站,您希望它们能够正确识别页面中内容丰富的部分。这意味着您希望页面上内容较多的节点在算法中获得高分。
因此,在这些算法的眼中,这里有一些改进页面质量的经验法则:
<br />
标签。虽然看起来很相似,但很多
与内容相关的算法(不仅是Reader View)非常依赖
在他们身上。<article>
,<nav>
,
<section>
,<aside>
。即使它们不是唯一的标准(如您在问题中所述),这些对于阅读您的计算机非常有用
页面(不仅仅是Reader View)来区分不同的部分
你的内容。 Readability.js使用它们来猜测哪些节点可能或不太可能包含重要内容。<article>
或<div>
元件。这将从所有段落标记中获得得分点
在其内部,并被确定为主要内容部分。