On Wed, 14 Oct 2009 04:25:42 -0400, Simon Pieters <[email protected]> wrote:
On Wed, 14 Oct 2009 06:12:01 +0200, Michael A. Puls II
<[email protected]> wrote:
Gervase Markham <[email protected]> wrote:
On a <video> element (I haven't tried <audio>), if you change the src=
attribute to a new file, you have to call .load() before .play(),
otherwise it replays the old file. This lost me half an hour of
debugging, and recently another person posted in the Mozilla newsgroups
having exactly the same problem.
(Thanks for posting this)
I am that other person and here's what I personally expect, fwiw:
When setting src:
1. The current media should stop playing.
2. It should then be unloaded.
3. All states should be reset (including the play state).
4. The new media should start loading.
5. If autoplay is true, the new media should start playing. If not, it
only starts playing when you call play().
My use-case is setting @src when clicking on a link (in an ordered list
of many links with click handlers) to an .ogg file.
Having to call load() after setting src seems odd since I set src for a
reason, which is, to load it so I can play() it (or automatically play
it if I have autoplay set to true).
For <object> when you change @type/@data, the object is pretty much
re-evaluated. I pretty much expect the same when setting src for
<audio> and <video>
What behavior do you expect when using <source>s instead of src?
Well, you can insert, replace and remove a <source> element. You can
change @src and @type on each <source> that's present.
One easy way (thought-wise) to handle that is that whenever any of that
happens, the UA should stop, unload, reset states and figure out what
<source> to play.
On the other hand, you might want to change @src for multiple <source>s
without triggering a reevalutation until you explicitly call for one.
Or, you might want a mix of the two that depends on whether there's just
one <source> or where you're inserting a <source> (before the one that's
currently being used for example) or which <source> you're removing (the
one being used or not).
So, I mostly expect the first way. However, the second seems simpler and
would just cover everything.
But, note that I haven't really dealt with the multiple type fallback
stuff yet, so I don't have a strong opinion on <source> yet.
--
Michael