[whatwg] Autoplaying media elements not in a document

Philip Jägenstedt philipj at opera.com
Mon Oct 18 00:05:32 PDT 2010


On Mon, 18 Oct 2010 01:01:00 +0200, Chris Pearce <chris at pearce.org.nz>  
wrote:

>   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

Subversion is too slow to say exactly when, but "and the media element is  
in a Document whose browsing context did not have the sandboxed automatic  
features browsing context flag set when the Document was created" was  
added to the spec quite recently, after Opera implemented autoplay anyway.

Assuming the change in behavior was accidental, the spec should instead  
say "and the media element is not in a Document whose browsing context had  
the sandboxed automatic features browsing context flag set when the  
Document was created".

-- 
Philip Jägenstedt
Core Developer
Opera Software



More information about the whatwg mailing list