In the description of the media ready states for HAVE_ENOUGH_DATA [1], the spec says:

If the autoplaying flag <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#autoplaying-flag> is true, and the |paused <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#dom-media-paused>| attribute is true, and the media element <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#media-element> has an |autoplay <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-autoplay>| attribute specified, and the media element <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#media-element> is in a |Document <http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#document>| whose browsing context <http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#browsing-context> did not have the sandboxed automatic features browsing context flag <http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#sandboxed-automatic-features-browsing-context-flag> set when the |Document <http://www.whatwg.org/specs/web-apps/current-work/multipage/infrastructure.html#document>| was created, then the user agent may also set the |paused <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#dom-media-paused>| attribute to false, queue a task <http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#queue-a-task> to fire a simple event <http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#fire-a-simple-event> named |play <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#event-media-play>|, and queue a task <http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#queue-a-task> to fire a simple event <http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#fire-a-simple-event> named |playing <http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#event-media-playing>|.

This means that we'll will only autoplay if a media element is in a document. Why do we prevent media elements not in a document from autoplaying? We allow audio from a media element not in a document to play, why not allow autoplay to work while not in a document too?

I note that Firefox, Chrome, Safari and Opera all autoplay when a media element is not in a document. It looks like IE9 Beta never autoplays unless the media element is hard coded in the HTML file with an autoplay attribute; IE9 doesn't seem to honour autoplay set from script.

Unless there's a good reason not to, and since most browsers have implemented autoplay when not in a document anyway, perhaps we should update the spec to match the implemented behaviour?


Regards,
Chris Pearce.

[1] http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#dom-media-have_enough_data

Reply via email to