From 2351896cc0339eff4954600efd99eec1eed30f51 Mon Sep 17 00:00:00 2001 From: Tobias Bosch Date: Thu, 28 May 2015 14:58:52 -0700 Subject: [PATCH] fix(dom): allow to correctly clone document fragments --- modules/angular2/src/dom/parse5_adapter.cjs | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/angular2/src/dom/parse5_adapter.cjs b/modules/angular2/src/dom/parse5_adapter.cjs index a151cb7ddb..98adf50b5f 100644 --- a/modules/angular2/src/dom/parse5_adapter.cjs +++ b/modules/angular2/src/dom/parse5_adapter.cjs @@ -135,7 +135,7 @@ export class Parse5DomAdapter extends DomAdapter { }; return evt; } - preventDefault(evt) { + preventDefault(evt) { evt.returnValue = false; } getInnerHTML(el) { @@ -302,11 +302,18 @@ export class Parse5DomAdapter extends DomAdapter { throw _notImplemented('getDistributedNodes'); } clone(node) { - var temp = treeAdapter.createElement("template", null, []); - treeAdapter.appendChild(temp, node); - var serialized = serializer.serialize(temp); - var newParser = new parse5.Parser(parse5.TreeAdapters.htmlparser2); - return newParser.parseFragment(serialized).childNodes[0]; + // e.g. document fragment + if (node.type === 'root') { + var serialized = serializer.serialize(node); + var newParser = new parse5.Parser(parse5.TreeAdapters.htmlparser2); + return newParser.parseFragment(serialized); + } else { + var temp = treeAdapter.createElement("template", null, []); + treeAdapter.appendChild(temp, node); + var serialized = serializer.serialize(temp); + var newParser = new parse5.Parser(parse5.TreeAdapters.htmlparser2); + return newParser.parseFragment(serialized).childNodes[0]; + } } hasProperty(element, name:string) { return _HTMLElementPropertyList.indexOf(name) > -1;