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
- [whatwg] Autoplaying media elements not in a document Chris Pearce
-