On Oct 19, 2007 11:55 AM, Geoffrey Garen <<a href="mailto:ggaren@apple.com">ggaren@apple.com</a>> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">> Suppose a script creates a <video> element, adds it to the document,<br>> starts it playing, then removes the element from the document and<br>> drops all references to it. When should the element stop playing?
<br><br>> -- when the element leaves the document?<br><br></div>Probably. Since you can't see the video any more, it would be really<br>weird to hear audio from it, or waste computer resources on a mute and<br>invisible video. Moreover, there's a lot of precedent for DOM elements
<br>not loading when they're not in the document. This is true of iframe,<br>script, img, etc.</blockquote><div><br>It's not true of <img>. Javascript image preloading tricks rely on it. <br><br>And as Maciej mentioned, it would be useful to be able to play audio outside the document, and to be consistent, <video>'s behaviour should match.
<br></div><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> -- when all JS references to the element have been dropped (and<br>
<div class="Ih2E3d">> garbage collection runs)?<br><br></div>No. The time at which garbage collection will reclaim an object is<br>unpredictable, so relying on garbage collection for behavior is a bad<br>idea.</blockquote>
<div><br>Agreed. <br></div><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> -- when the user leaves the page?<br><div class="Ih2E3d">
<br></div>Certainly. But you might want to stop the video sooner.</blockquote><div><br>Agreed. <br></div><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
> -- when the end of the stream is reached? (which could be "never")<br><div class="Ih2E3d"><br></div>Certainly. (How can you play past the end of the stream?) But you<br>might want to stop the video sooner.<br>
</blockquote><div><br>Agreed. <br></div></div><br>A related question is whether display:none audio and video elements should produce sound.<br><br>My current opinion is that <audio> and <video> elements should behave like <img> and load/play whether or not they're in a document, but they should only emit sound if they're in a document with a presentation and are not in a display:none subtree. Then to play a sound you'd have to insert the element into your document somewhere with size 0x0 (which should be the default for <audio>).
<br><br>But it's a rather tangled issue.<br><br clear="all">Rob<br>-- <br>"Two men owed money to a certain moneylender. One owed him five hundred denarii, and the other fifty. Neither of them had the money to pay him back, so he canceled the debts of both. Now which of them will love him more?" Simon replied, "I suppose the one who had the bigger debt canceled." "You have judged correctly," Jesus said. [Luke 7:41-43]