From e1a8d6984066f7c2eafab4ed7953361035b640e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=87=8C=E6=81=92?= Date: Wed, 1 Apr 2015 18:13:03 +0800 Subject: [PATCH] fix render order error in safari --- src/browser/ui/dom/DOMChildrenOperations.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/browser/ui/dom/DOMChildrenOperations.js b/src/browser/ui/dom/DOMChildrenOperations.js index 906c942eb0..f964d47da6 100644 --- a/src/browser/ui/dom/DOMChildrenOperations.js +++ b/src/browser/ui/dom/DOMChildrenOperations.js @@ -31,10 +31,20 @@ function insertChildAt(parentNode, childNode, index) { // rely exclusively on `insertBefore(node, null)` instead of also using // `appendChild(node)`. However, using `undefined` is not allowed by all // browsers so we must replace it with `null`. - parentNode.insertBefore( - childNode, - parentNode.childNodes[index] || null - ); + + // fix render order error in safari + try { + parentNode.insertBefore( + childNode, + parentNode.childNodes.item(index) || null + ); + } catch (e) { + //IE8 can't use `item` when childNodes is empty. + parentNode.insertBefore( + childNode, + parentNode.childNodes[index] || null + ); + } } /**