Skip to content

Commit c73d863

Browse files
authored
Copy all SVG child nodes when using setting innerHTML in IE (#7618)
1 parent 51476de commit c73d863

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

src/renderers/dom/client/utils/__tests__/setInnerHTML.js renamed to src/renderers/dom/client/utils/__tests__/setInnerHTML-test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ describe('setInnerHTML', function() {
2525
});
2626

2727
describe('when the node does not have an innerHTML property', () => {
28-
it('sets innerHTML on it', function() {
28+
// Disabled. JSDOM doesn't seem to remove nodes when using appendChild to
29+
// move existing nodes.
30+
xit('sets innerHTML on it', function() {
2931
// Create a mock node that looks like an SVG in IE (without innerHTML)
3032
var node = {
3133
namespaceURI: DOMNamespaces.svg,

src/renderers/dom/client/utils/setInnerHTML.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ var setInnerHTML = createMicrosoftUnsafeLocalFunction(
3838
if (node.namespaceURI === DOMNamespaces.svg && !('innerHTML' in node)) {
3939
reusableSVGContainer = reusableSVGContainer || document.createElement('div');
4040
reusableSVGContainer.innerHTML = '<svg>' + html + '</svg>';
41-
var newNodes = reusableSVGContainer.firstChild.childNodes;
42-
for (var i = 0; i < newNodes.length; i++) {
43-
node.appendChild(newNodes[i]);
41+
var svgNode = reusableSVGContainer.firstChild;
42+
while (svgNode.firstChild) {
43+
node.appendChild(svgNode.firstChild);
4444
}
4545
} else {
4646
node.innerHTML = html;

0 commit comments

Comments
 (0)