- From: Philip Jägenstedt <philipj@opera.com>
- Date: Thu, 27 Jan 2011 23:17:49 +0100
- To: "Jim Allan" <jimallan@tsbvi.edu>, "Eric Carlson" <eric.carlson@apple.com>
- Cc: david.bolter@gmail.com, "Charles McCathieNevile" <chaals@opera.com>, "Sean Hayes" <Sean.Hayes@microsoft.com>, "WAI-UA list" <w3c-wai-ua@w3.org>, "HTML Accessibility Task Force" <public-html-a11y@w3.org>
On Thu, 27 Jan 2011 23:12:43 +0100, Eric Carlson <eric.carlson@apple.com>
wrote:
>
> On Jan 27, 2011, at 12:06 PM, Eric Carlson wrote:
>
>>
>> On Jan 27, 2011, at 10:39 AM, Philip Jägenstedt wrote:
>>
>>>
>>> Short answer: Yes, it's possible.
>>>
>>> I've recently added a user preference to Opera to disable autoplay,
>>> and this should be in a not too distant release of our desktop
>>> browser. If it turns out that it's common with sites that use script
>>> to force autoplay, then it's possible to go further. Specifically, one
>>> could use the same techniques that are used for pop-up blockers to see
>>> if the play() request was from user interaction or a background
>>> script. If isn't from direct user interaction, one could ask the user
>>> to explicitly allow the media to play, perhaps remembering the choice
>>> for the site.
>>>
>>> However, this kind of thing would be an opt-in setting, since we don't
>>> want to bother users with lots of dialogs by default.
>>
>> iOS devices have this restriction - playback of a <video> or <audio>
>> element can only be triggered in response to a user gesture (like
>> pop-up blockers). This has caused no end of bug reports because it is
>> impossible to differentiate script originated "auto play" from playback
>> triggered by a script after a delay, eg.
>>
>> onclick= "setTimeout(function(){ video.play() }, 200)"
>>
>> or in response to another event, eg. to start playback after something
>> else happens:
>>
>> button.addEventListener('webkitAnimationEnd', function (){ video.play)
>> }, false);
>>
>> Neither of these is a much of an edge case as you might think, I get
>> bug reports all the time about web sites where <video> "doesn't work on
>> the iPhone" because they use script to trigger playback.
>>
> I meant to add that one real danger with this kind of change is that
> many (most?) developers won't test with the setting enabled, so audio
> and video on their pages won't just not auto-play - it won't play at all.
>
> eric
Indeed, this is another reason why we wouldn't want to make that behavior
the default. A solution that might perhaps be less prone to breaking sites
would be to just do what the spec calls "paused for user interaction",
which would fire a waiting event and behave similarly to a network stall.
--
Philip Jägenstedt
Core Developer
Opera Software
Received on Thursday, 27 January 2011 22:19:47 UTC