- From: Boris Zbarsky <bzbarsky@MIT.EDU>
- Date: Sun, 18 Jan 2009 13:16:06 -0500
- To: "Hallvord R. M. Steen" <hallvord@opera.com>
- CC: public-html@w3.org
Hallvord R. M. Steen wrote: > Here is another issue for Ian to ponder while working on the script > execution stuff: > > If you clone a script node and append the to the document, does it run? Assuming this is a script node that already ran? In Gecko we just copy the "node has run" flag when cloning, so if you createElement a <script>, set its src, then clone it, then insert both scripts in the document they'll both run. > From my naturally biased point of view I think Opera makes more sense - > a "deep" clone remembers that the script was already executed, a shallow > doesn't because it doesn't clone the script code. Here's what the DOM spec says about the "deep" argument to cloneNode [1]: deep of type boolean If true, recursively clone the subtree under the specified node; if false, clone only the node itself (and its attributes, if it is an Element). So I don't see how "because it doesn't clone the script node" can possibly be supported by the spec text here. Certainly if the script is one loaded via @src it's cloning all the information there is to clone. I agree that the spec is not clear on what cloning should do with state not represented in attributes, but what it sounds like to me is that Opera (and Gecko, for that matter) added a hack to work around pages that broke because of assuming the IE behavior and Opera just added a slightly different hack than Gecko. Nothing wrong with that, but let's not try to invent post-facto justifications. For what it's worth, https://bugzilla.mozilla.org/show_bug.cgi?id=127016 is the Gecko bug that led to the current Gecko behavior, so I can in fact say with confidence that my description above of why Gecko behaves the way it does is correct. ;) -Boris [1] http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#ID-3A0ED0A4
Received on Sunday, 18 January 2009 18:17:09 UTC