- From: Brady Eidson <beidson@apple.com>
- Date: Fri, 27 Jun 2008 14:04:45 -0700
One focus area for HTML5 has been to solidify the concept of "Web pages as Web Applications" and to introduce concepts to flesh out this new Web Application concept such as the application name, more flexible icons, offline data storage, and online/offline discovery. There is one aspect to this notion of "Web Applications" that is being explored by multiple vendors but hasn't been explicitly addressed in HTML5 quite yet: the "stand alone web application." For the few among you unfamiliar with this idea, the concept is running a web application in a dedicated user agent that doesn't have the typical chrome, behavior, features, or footprint of a traditional browser. In support of this new area of interest, I propose two new additions to the ClientInformation interface as follows: First: "readonly attribute boolean standalone;" This is in the same vein as the window.navigator.onLine property which gives authors a great hint on how to change the behavior of their web application based on the existence of a network connection. The standalone property would give web application developers a powerful hint as to whether or not they are running in a full browser or in a more minimalistic, dedicated user agent. There's a number of things they might customize based on this situation such as look, feel, and available feature set. I'd like us to try and avoid the user agent sniffing nightmare that is common on the web. Currently a web application developer has to inspect the user agent and other nonstandard window.navigator properties to try to guess whether they're running in a full browser or a minimalistic interface. Since this set of properties and user agents will keep changing over time, I think it's a prudent move to give scripts this simple flag as a future-proof way to make these powerful decisions. Second: "void makeStandalone();" Web applications that have been fully designed to behave as stand alone applications should be able to announce this fact. Currently web applications would have to state in their page that they are "standalone aware" and to instruct users on how they might go about creating a standalone version of the page. I've seen and heard buzz that web authors would like a better way. This is what the makeStandalone() call is about. The intention behind the call is that the user agent would prompt the user about creating a standalone application from the current page. Of course user agents would have full flexibility in how they respond to the call such as choosing to do nothing, prompting only once for a given domain or URL, or prompting only when the user prefers to be prompted. I imagine most user agents would tie the workings of this method to a user action, much like popup blocking works currently, so the page could only enact the prompt when the user clicks on some control. I just think it's quite valuable to get the tool out there for web applications to use. The exact naming of this method call is up for debate, but I think my point is clear. With my proposals, the ClientInformation interface would look as follows: interface ClientInformation { readonly attribute boolean onLine; readonly attribute boolean standalone; void makeStandalone(); void registerProtocolHandler(in DOMString protocol, in DOMString url, in DOMString title); void registerContentHandler(in DOMString mimeType, in DOMString url, in DOMString title); }; Your thoughts? ~Brady Eidson
Received on Friday, 27 June 2008 14:04:45 UTC