- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Fri, 18 Sep 2009 14:43:39 -0400
On 9/18/09 10:21 AM, Michael A. Puls II wrote: > Attaching a test. Thanks for doing that! > In Opera: > > If you switch the display to none, it destroys the plug-in instance. > Setting the display to something else again doesn't restore the previous > plug-in instance. It creates a new one that starts playing from the > beginning. > > However, switching between inline, inline-block, block and table just > changes the display and the plug-in keeps playing the file. Gotcha. Note that due to the way style changes tend to be processed in browsers this leads to bizarre behavior where exactly how you do your switching matters. For example, in your testcase in Opera if I do this: document.getElementsByTagName('object')[0].style.display="none"; document.getElementsByTagName('object')[0].style.display="block"; while the video is running, the video doesn't restart. However if I do: document.getElementsByTagName('object')[0].style.display="none"; document.body.offsetWidth; document.getElementsByTagName('object')[0].style.display="block"; then the video does restart. Note that Gecko and Webkit suffer from a similar inconsistency as long as the display value was "block" before the two lines above; if it was something else the video restarts no matter what, as you noted. > Once the <object> is shown for the first time, you can set its display > to none, inline, inline-block, block and table and it will just change > the display while letting the plug-in keep playing. This means that > setting the display to none won't destroy the plug-in instance like it > does in other browsers. In other words, there's hysteresis. The DOM state doesn't uniquely describe the document state... > So, is it IE's behavior we want here, or Opera's? In my opinion, neither. We don't want to have plug-in instantiation depending on the CSS box model at all (and want to instantiate even if display is "none"). If that's not feasible, then IE's model is imo preferable to Opera's "sometimes it'll restart sometimes not" model.... > Or, are you saying that the <object> should also load the plug-in even > when its display is set to none by default? That seems like the most self-consistent approach to me. -Boris
Received on Friday, 18 September 2009 11:43:39 UTC