- From: Philip Jägenstedt <philipj@opera.com>
- Date: Mon, 18 Aug 2008 18:09:23 +0200
http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#load There are a number of conditions for media elements where the user agent "must implicitly invoke the load() method on the media element as soon as all other scripts have finished executing": * a source element is inserted into a media element that is already in a document and whose networkState is in the EMPTY state * the src attribute of a media element that is already in a document and whose networkState is in the EMPTY state is added, changed, or removed * a media element whose networkState has the value EMPTY is inserted into a document Now consider this markup <video src="foo"></video> with this script dynamically changing the sources video = document.getElementById("video"); video.removeAttribute("src"); // implicit delayed load source = document.createElement("source"); source.src = "bar"; source.media = "projection"; video.appendChild(source); // implicit delayed load source = document.createElement("source"); source.src = "baz"; source.media = "screen"; video.appendChild(source); // implicit delayed load video.play() // i want to play now! play() will call load() before returning, so after this has finished there shouldn't be any need to load() any more. However, there is no less than 3 calls to load() waiting. Playback will begin, but will stop as soon as the first of those delayed loads are invoked. I believe that the spec actually may allow the N implicit loads to be treated as 1, but at the very least there must be that 1, which is still too many in this case. I doubt many authors will realize all the things which may cause an implicit load, so I think the spec needs to allow for this to be made simpler (from the script author's point of view). More importantly, there's absolutely no need to implicitly call load once its been explicitly called once. I would suggest the following solution: If when the time comes to invoke the load() method it has already been invoked (directly or via another implicit invocation triggered by the same script) then don't call it again. Comments? I'm not sure exactly how to change the spec, but if we agree that this needs fixing we can come back to that. -- Philip J?genstedt Opera Software
Received on Monday, 18 August 2008 09:09:23 UTC