- From: ric <ric@hardacre.org>
- Date: Tue, 01 Jul 2008 20:52:10 +0100
- To: public-html-comments@w3.org
FIRST REVISION of original proposal archived at http://lists.w3.org/Archives/Public/public-html-comments/2008Apr/0003.html Author: Ric Hardacre Background ---------- The advent of faster processors and broadband speeds combined with more widespread browser support for DOM and XMLHTTPRequest has caused an upsurge in the number of rich-media sites and pages on the WWW. Many of these host content within plugin containers and as such are "disconnected" from the traditional Document object present in the HTML/DOM specs. It is becoming apparent that such sites are expanding to fill their environments, making maximum use of available bandwith and processor cycles and in the process making assumptions about the capabilities of their target users' systems. This is expecially true of mobile/roaming web users, who may be using low powered hardware over a limited connection but still need certain javascript features (such as XMLHttpRequest) to operate an online application. In these instances an "all or nothing" approach to rich-content is clearly unacceptable. Outline of Proposal ------------------- That a static class be placed belonging to the Document node within the DOM which hosts values set by the user to control their browsing experience. Scripts and embedded objects should refer to the object prior to carrying out any relevant "rich" actions. Whilst these settings are unenforcable by the browser (especially with regards to embedded objects) should such a system be folded into the HTML/DOM specification these sites, pages and plugins could therefore be flagged as being incompliant with the specification. In effect naming and shaming them into compliance. Browser vendors may be left to decide how to present these options to the user, be it per domain, site, or "zone" (internet vs intranet, for example) or to have quick toggles on the toolbars. However, the DOM implimentation should appear the same to any hosted javascript for all browsers wishing to advertise compliance with this proposal. Implimentation Example ---------------------- This example assumes such an object exists within the document node and is called UserPreferences. function Plugin_OnLoad() { //does the browser support the implimentation? if( document.UserPreferences ) if( document.UserPreferences.AutoPlayVideo ) Plugin.PlayVideo(); } In the above example the video only plays automatically if the UserPreferences object exists AND has the AutoPlayVideo boolean set to true. Implimentation Suggestions -------------------------- The following are a suggested list of parameters that may be exposed to web pages in a read-only manner, it is hoped they are grouped and kept to a minimum - one boolean covers scrolling, moving and resizing effects for example, rather than have an individual setting for each. int MaxStreamRate (NEW IN THIS REVISION) - The maximum streaming rate (bytes/sec) allowed by hosted content, specifically Audio and Video, however this may apply to other stream-loading content such as Flash. If a user is sharing a network, or connecting via a mobile device their available bandwidth may be limited, this could then be used to force media into "low-res" mode. If a site's content requires a streaming rate above this value it should still allow the user to choose to play the content, behaving much the same as AutoPlayVideo / AutoPlayAudio. int MaxImageSize (NEW IN THIS REVISION) - The maximum size (bytes) of an inline image or non-streaming object allowed to be downloaded automatically. Mobile users may wish to set this to zero to maximise use of a pay-per-byte connection plan, for example. Users should be presented with an icon allowing them to load such images or objects on a case by case basis, provided the inline dimensions of the object allows it. bool AutoPlayAudio - Wether or not the user wishes audio content to play automatically, if this is set to false then the option to play the audio should still be available but a play button should be shown and only activated by a direct user click on that button. Never via a secondary scripting action (including document onload). bool AutoPlayVideo - Wether or not the user wishes video content to play automatically, if this is set to false the option to play the video should still be available but a play button should be shown and only activated by a direct user click on that button. Never via a secondary scripting action (including document onload). int DefaultAudioVolume - User's preferred audio volume (0-9) for all embedded content, if this is set to 0 then audio and video content should play (depending on the above two preferences) but muted. Users should be presented with the ability to override this on a per-content per-page-load basis - unmuting one video stream should not automatically unmute all future video streams hosted on the same site, for example. A user is allowed to set this to zero but still have AutoPlayAudio set to true! Note: This is deliberately not tied to the OS-wide volume settings, a user may have this set to 0 to allow them to listen to a podcast uninterupted whilst browsing, for example. bool AllowTransparency - User's prefrence regarding transparent/translucent overlays. The setting here should also influence fade/transition effects that use transparency as well as drop-shadow effects, for example. bool AllowTransitions - User's preference regarding dynamic scrolling,moving and resizing content. If this is false then dynamic content is still allowed but must "jump" to it's final open,close,position or scrolled state with no interpolation. Future Possibilities -------------------- It is envisioned that a number of the above settings be folded into a future HTTP revision, providing the server-side application with direct knowledge of the user's preferences regarding interactive content, this would allow much cleaner control for developers who would be able to serve fallback content without relying on client javascript degredation, overrides or redirects. As a number of these settings are bandwidth related it is hoped that one day a similar OS-hosted object exist with settings tied to the current (if any) internet connection, these could then "bubble up" into the browser for embedded objects to reference. Ultimately such an OS-hosted option would have it's settings auto-filled dependent on the user's current connection status, e.g. having AutoPlayVideo auto-set to false when the user uses a mobile dial-up account but true when using their home wifi broadband connection. This OS-hosted object should also have a "IsConnected" boolean to prevent any application from attempting to determine internet availability by checking for DNS timeouts! However this final paragraph has turned into a ramble and does not directly apply to the above proposal. Ric Hardacre cyclomedia.co.uk
Received on Wednesday, 2 July 2008 15:27:53 UTC