On 1/20/11 11:51 AM, Charles McCathieNevile wrote:
On Thu, 20 Jan 2011 03:22:29 +0100, Alex Komoroske
<komoro...@chromium.org> wrote:

Hi all,

There is currently no good way for a web page to detect that it is
completely invisible to the user...

We have implemented something like this for our extensions framework,
where it is common to have messaging between a tb and the background tab
where the main extension logic runs. It would also make sense for
applications that might want to communicate with each other client-side,
rather than having to pass everything through a server (not so relevant
to the common Google models, but very relevant to applications that
explicitly don't want to share with a cloud provider).

Use cases

* An app can provide notifications (using the Web Notification stuff
that is under developemnt) when it is not visible/focused, but skip them
when it is to minimise distractions and reduce cognitive load
* An application can (try to) communicate with the currently focused
application. This is essentially what a whole class of extensions does
in practice. Enabling it for general HTML would be a step towards making
it possible to share different functionality extensions. Right now, it
would rely on out-of-band agreement about how to communicate, but that
is perfectly feasible in practice. It also introduces a clear
requirement for a security discussion (see the paper that Art posted
recently...).

With these use-cases in mind, there are a number of requirements.

Requirements

* Easy for developers to write scripts that fall back on old behaviors
for browsers that do not implement this API
* Ability to query the document’s current visibility state
* Events fired when the document transitions between visibility states
* Ability for browser vendors to add new visibility states in the future

I wonder if view mode media features [1] + CSSOM View's matchMedia() method [2] would help meet the requirements? Could looks something like:

var mql = matchMedia("(view-mode:hidden)")
mql.addListener(handleHide)

We would, of course, need to add "hidden" to [1]... but it would not be a big deal.

[1] http://dev.w3.org/2006/waf/widgets-vmmf/
[2] http://dev.w3.org/csswg/cssom-view/#dom-window-matchmedia
--
Marcos Caceres
Opera Software

Reply via email to