Chromium Code Reviews| Index: client/html/src/XMLElementWrappingImplementation.dart |
| diff --git a/client/html/src/XMLElementWrappingImplementation.dart b/client/html/src/XMLElementWrappingImplementation.dart |
| index 94aa3536961701e73ba25a98749bfc2b1dd23015..161cdbf7c5e11b4cca5ad0c6aecd4bf1d5ca0659 100644 |
| --- a/client/html/src/XMLElementWrappingImplementation.dart |
| +++ b/client/html/src/XMLElementWrappingImplementation.dart |
| @@ -52,19 +52,25 @@ class XMLElementWrappingImplementation extends ElementWrappingImplementation |
| String get outerHTML() { |
| final container = new Element.tag("div"); |
| - container.elements.add(this.clone(true)); |
| + // Safari requires that the clone be removed from its owner document before |
|
kasperl
2012/02/29 05:59:58
Is this another place where knowing which platform
nweiz
2012/02/29 19:41:45
I believe #remove is very cheap, so I don't think
|
| + // being inserted into the HTML document. |
| + container.elements.add(this.clone(true).remove()); |
| return container.innerHTML; |
| } |
| String get innerHTML() { |
| final container = new Element.tag("div"); |
| - container.nodes.addAll(this.clone(true).nodes); |
| + // Safari requires that the clone be removed from its owner document before |
| + // being inserted into the HTML document. |
| + container.nodes.addAll(this.clone(true).remove().nodes); |
| return container.innerHTML; |
| } |
| void set innerHTML(String xml) { |
| final xmlDoc = new XMLDocument.xml('<xml>$xml</xml>'); |
| - this.nodes = xmlDoc.nodes; |
| + // Safari requires that the root node be removed from the document before |
| + // being inserted into the HTML document. |
| + this.nodes = xmlDoc.remove().nodes; |
| } |
| Node _insertAdjacentNode(String where, Node node) { |