ChatGPT解决这个技术问题 Extra ChatGPT

How to enable iOS 5 Safari Reader on my website?

How does the Reader function of Mobile Safari in iOS 5 work? How do I enable it on my site. How do I tell it what content on my page is an article to trigger this function?

See stackoverflow.com/questions/30730300/… for some information on the Reader View in Firefox.

M
Mathias Bynens

A lot of the answers posted here contain false information. Here are some corrections/clarifications:

The

element works fine as a wrapper; Safari Reader recognizes it. My site is an example. It doesn’t matter which wrapper element you choose, as long as there is one, other than or

. You can use

,
,
; or elements that are semantically incorrect for this purpose, like
e
eriklinde

I've tested 100 or so variations of this on my iPhone in order to figure out what triggers this elusive Reader state. My conclusions are as follows:

Here is what I found had an impact:

Having around 200 or more words (or 1000 characters including whitespace) in the article you want to trigger the "Reader" seems necessary

The reader was NEVER triggered when I had less than 170 words; although it was sometimes triggered when I had 180 or 190 words.

Text inside certain elements such as

    or
      (that are not typically used to contain a story) will not count towards the 200 words (they will however be displayed in the reader if the reader is triggered for other reasons)

      Wrapping the 200 words in a block element such as a

      or
      seems necessary (that said, I'd be surprised if there were any websites where that was not already the case)

      For full disclosure, here is what I found did NOT have an impact:

      Whether using a header or not

      Whether wrapping the text in a

      or letting it flow freely

      Punctuations (ie removing all periods, commas, etc, did not have an impact)


a
alessandrio

It seems the algorithm it is based on is looking for p-Tags and it counts delimiters like "." in the innerText. The section (div) with the most points gets the focus.

see: http://lab.arc90.com/experiments/readability/

Seems to be the base for the Reader-mode, at least Safari attributes it in the Acknowledgements, see:

file:///C:/Program%20Files/Safari/Safari.resources/Help/Acknowledgments.html

Arc90 ( Readability ) Copyright © Arc90 Inc. Readability is licensed under the Apache License, Version 2.0.


C
Community

This question (How to disable Safari Reader in a web page) has more details. Copied here:

I'm curious to know more about what triggers the Reader option in Safari and what does not. I wouldn't plan to implement anything that would disable it, but curious as a technical exercise. Here is what I've learned so far with some basic playing around: You need at least one H tag It does not go by character count alone but by the number of P tags and length Probably looks for sentence breaks '.' and other criteria Safari will provide the 'Reader' if, with a H tag, and the following: 1 P tag, 2417 chars 4 P tags, 1527 chars 5 P tags, 1150 chars 6 P tags, 862 chars If you subtract 1 character from any of the above, the 'Reader' option is not available. I should note that the character count of the H tag plays a part but sadly did not realize this when I determined the results above. Assume 20+ characters for H tag and fixed throughout the results above. Some other interesting things: Setting for P tags removes them from the count Setting display to none, and then showing them 230ms later with Javascript avoided the Reader option too I'd be interested if anyone can determine this in full.


Incorrect. Heading elements are not required for Reader to work. Example: mathiasbynens.be/demo/safari-reader-test-3 Read more here: mathiasbynens.be/notes/safari-reader
S
Smartmarkey

Both Firefox and Chrome have the similar plugin named iReader. Here is its project with source code.

http://code.google.com/p/ireader-extension/

Read the code to get more.


j
jonsca

I was struggling with this. I finally took out the <ul> markings in my story, and viola! it started working.

I didn't put any wrapper around the body, but may have done it by accident.


y
yrn1

HTML5 article tag doesn't trigger it on my tests. It also doesn't seem to work on offline content (i.e. pages saved on your local machine).

What does seem to trigger it is a div block with a lot of p's with a lot of text.


I use <article> on my site and Reader works there, e.g. mathiasbynens.be/notes/html5-levels but not on smaller articles, e.g. mathiasbynens.be/notes/document-head The use of <article> doesn’t seem to have anything to do with it.
Any wrapper element will do — <div>, <article>, <section>… Even weird stuff like <nav>, <aside> or <span> work fine. Read more here: mathiasbynens.be/notes/safari-reader
u
user139195

The p tag theory sounds good. I think it also detects other elements as well. One of our pages with 6 paragraphs didn't trigger the Reader, but one with 4 paragraphs and an img tag did.

It's also smart enough to detect multi-page articles. Try it out on a multi-page article on nytimes.com or nymag.com. Would be interested to know how it detects that as well.


M
Marc

Surprising though it may be, it indeed does not pay any attention to the HTML5 article tag, particularly disappointing given that Safari 5 has complete support for article, section, nav, etc in CSS--they can be styled just like a div now, and behave the same as any block level element.

I had specifically set up a site with an article tag and several inner section tags, in prep for semantic HTML5 labeling for exactly such a purpose, so I was really hoping that Safari 5 would use that for Reader. No such luck--probably should file a bug on this, as it would make a great deal of sense. It in fact completely ignores most of the h2 level subheads on the page, each marked as a section, only displaying the single div that adheres to the criteria mentioned previously.

Ironically, the old version of the same site, which has neither article, section, nor separating div tags, recognizes the whole body for display in Reader.


<article> is a valid wrapper recognized by Safari Reader and it works fine. See my comment on this answer for some examples: stackoverflow.com/questions/2997918/…
I perhaps wasn't clear; I meant that
is not treated any differently than a regular
; I was hoping that if Reader saw an
tag it would treat the contents as if they were of one block, which it doesn't unless the contents conform to its other requirements. Upshot for me is that because my
contains several
and
Reader only grabs a single contained
.
A
Allen

See Article Publishing Guidelines.

Here are APIs about how to read and parse: Readability Developer APIs. There's already a project you can refer: ruby-readability.

A brief history: The Safari Reader feature since Apple's Safari 5 browser embeded a codebase named Readability, and Readability started off as a simple, Javascript-based reading tool that turned any web page into a customizable reading view. It was released by Arc90 (as an Arc90 Lab experiment), a New York City-based design and technology shop, back in early 2009. It's also embeded in Amazon Kindle and popular iPad applications like Flipboard and Reeder.


s
sashaeve

I am working on algorithms for cleaning web-sites from information "waste" similar to Safari Reader feature. It's not so good as readability but has some cool stuff.

You can learn more at smartbrowser.codeplex.com project page.