Hi all,<div><br></div><div>Thanks again for your comments and feedback.  It's been a couple of weeks since the last activity on this thread, and I wanted to take the opportunity to do a very high-level summary of the discussion so far and put forward an updated version of the proposal (which I've included at the end of this e-mail).</div>

<div><br></div><div>My high-level summary:</div><div><br></div><div>Although there is <i>high </i>level agreement about the need for a similar type of API, there are a number of concerns:</div><div><br></div><div>1) <b>Additional potential for abuse</b>.  My response to this was "<span class="Apple-style-span" style="border-collapse: collapse; color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; ">Although there is some additional opportunity for abuse, I think that it is not particularly large, possible to defend against if necessary, and outweighed by the advantages such an API would provide to legitimate web developers."  I'd be interested if those who originally raised this concern agree with this assessment.</span></div>

<div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; ">2) <b>Not the right tool for the use cases</b>.  Various other proposals, including an ability to set a timer that only fires when a page is visible or a way to semantically define what visibility specific types of content require, have been proposed to address the provided use cases.  So far those solutions are not concretely defined.</span></div>

<div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; ">3) <b>Too specific about tab/window/visibility</b>.  I've attempted to update the proposal (pasted below) to be more clear about the specific semantics and how they might differ on different platforms.  I'd appreciate your comments.</span></div>

<div><span class="Apple-style-span" style="border-collapse: collapse; color: rgb(34, 34, 34); font-family: arial, sans-serif; font-size: 13px; "><br></span></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><b>Updated API proposal</b></span></font></div>

<div><font class="Apple-style-span" color="#222222" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><b><br></b></span></font></div><div><font class="Apple-style-span" color="#222222" face="arial, sans-serif"><span class="Apple-style-span" style="border-collapse: collapse;"><div>

document.visibility</div><div><br></div><div>A read-only property that returns a string, one of the values described in the next section.  Developers can use the existence of this property to know that they can rely on the rest of this API, too.</div>

<div><br></div><div>     Values returned by all conforming implementations</div><div>           * “visible” : the full-size page content is at least partially visible on at least one screen.  </div><div>           * “hidden” : the full-size page content is not visible to the user at all.</div>

<div>     Additional values potentially returned by some implementations in some cases</div><div>           * “prerender” : the page is currently being loaded off-screen and might never be shown to the user.</div><div>           * “cache” : the page is currently “frozen” in a cache and not displayed on screen (e.g. the back-forward cache).</div>

<div>           * “preview” : the page is currently visible only in a lower-resolution thumbnail.</div><div><br></div><div><br></div><div>States in the second set are not guaranteed to be returned in all cases where they might otherwise appear to apply--it is left to the discretion of the implementation.</div>

<div><br></div><div>Additional return values may be added to this API in the future.  </div><div><br></div><div>It is up to the implementation to interpret what these values mean in the precise context of interface and platform.  As an example, a current-generation desktop browser might interpret the values the following way:</div>

<div>    * “visible” : the tab is focused in its non-minimized window (regardless of the focus state of the containing window).</div><div>    * “hidden” : the tab is backgrounded within its window, or the containing window is minimized.</div>

<div><br></div><div><br></div><div>document.isVisible</div><div><br></div><div>A simple convenience read-only property that returns a boolean. Returns true if document.visibility’s current value is in the set of visibility states considered to be visible.  In most implementations, only the “visible” state is considered visible--although some implementations may consider other values to be visible as well (for example, an implementation that makes regular use of nearly-full-size thumbnail previews may consider “preview” to be a visible state).</div>

<div><br></div><div>visibilitychange</div><div><br></div><div>A simple event, fired at the document object immediately after document.visibility transitions between visibility states.  The event has a property, fromState, that is set to the value of document.visibility just before it was changed to the current value.  Note that visibility has nothing to do with whether the document’s contents have fully loaded or not, which implies that for any given visibility transition event, onload may or may not have already fired.</div>

</span></font></div><meta charset="utf-8"><div><br><div class="gmail_quote">On Mon, Dec 20, 2010 at 3:44 PM, Boris Zbarsky <span dir="ltr"><<a href="mailto:bzbarsky@mit.edu" target="_blank">bzbarsky@mit.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>On 12/20/10 5:16 PM, Alex Komoroske wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
But I think overall the discussion about precisely what a tab means is<br>
not central to the core proposal.  Is that reasonable?<br>
</blockquote>
<br></div>
Yep.<br><font color="#888888">
<br>
-Boris<br>
</font></blockquote></div><br></div>