Not in this case. It's kind of confusing and I had to have it explained to me :)
Here's why cloneNode doesn't work in this case, but importNode does: 1. templates make their contents inert by putting them in a special document 2. that special document has no custom elements registered 3. moving an element between documents does not change its identity, vis-a-vis custom elements 4. cloneNode + appending to a document creates it in the old document then moves it to the new one, while importNode creates it in the new document On Tue, Jul 8, 2014 at 9:16 AM, Jelte Liebrand <[email protected]> wrote: > Yep! That worked; Should cloneNode not have also worked? > > > Jelte Liebrand | Software Engineer | [email protected] > <[email protected]> | +1 (415) 318 6507 > > > On 8 July 2014 08:55, Rob Dodson <[email protected]> wrote: > >> try this instead: >> >> document.body.appendChild(document.importNode(t.content, true)); >> >> does that work for you? >> >> >> On Tue, Jul 8, 2014 at 8:37 AM, Jelte Liebrand <[email protected]> >> wrote: >> >>> I'm slightly puzzled, and no doubt I'm doing something silly here, but I >>> have created my own element "my-element" which has an additional function >>> "foo()". When I place one of these guys declaratively on my page, it works >>> fine, eg: >>> >>> <my-element></my-element> >>> >>> This element is an instance of MyElement and it has the function foo(). >>> >>> However, if I place it (declaratively) inside a template, which I then >>> later clone in to my document, then the element does not appear to be >>> upgraded and does not have my foo() function. eg: >>> >>> in html: >>> <template id="t"> >>> <my-element></my-element> >>> </template> >>> >>> in javascript: >>> var t = document.getElementById('t'); >>> document.body.appendChild(t.content.cloneNode(true)); >>> >>> The element does end up in my DOM, but it just doesn't have the foo() >>> function nor is it an actual instanceof MyElement. >>> >>> Am I missing something obvious here? >>> >>> /Cheers, >>> Jelte >>> >>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Polymer" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/polymer-dev/31060fba-4113-4b06-ad80-32e5232716b8%40googlegroups.com >>> <https://groups.google.com/d/msgid/polymer-dev/31060fba-4113-4b06-ad80-32e5232716b8%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> >> > Follow Polymer on Google+: plus.google.com/107187849809354688692 --- You received this message because you are subscribed to the Google Groups "Polymer" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/polymer-dev/CAJj5OwB%2BGrtrH79Aa0C8cP6wqxQ2UeuiRJJX_kAGhKAQ0-YsbA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
