(parentNode,newChild,nextChild)
| 2246 | return child; |
| 2247 | } |
| 2248 | function _insertBefore(parentNode,newChild,nextChild){ |
| 2249 | var cp = newChild.parentNode; |
| 2250 | if(cp){ |
| 2251 | cp.removeChild(newChild);//remove and update |
| 2252 | } |
| 2253 | if(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){ |
| 2254 | var newFirst = newChild.firstChild; |
| 2255 | if (newFirst == null) { |
| 2256 | return newChild; |
| 2257 | } |
| 2258 | var newLast = newChild.lastChild; |
| 2259 | }else{ |
| 2260 | newFirst = newLast = newChild; |
| 2261 | } |
| 2262 | var pre = nextChild ? nextChild.previousSibling : parentNode.lastChild; |
| 2263 | |
| 2264 | newFirst.previousSibling = pre; |
| 2265 | newLast.nextSibling = nextChild; |
| 2266 | |
| 2267 | |
| 2268 | if(pre){ |
| 2269 | pre.nextSibling = newFirst; |
| 2270 | }else{ |
| 2271 | parentNode.firstChild = newFirst; |
| 2272 | } |
| 2273 | if(nextChild == null){ |
| 2274 | parentNode.lastChild = newLast; |
| 2275 | }else{ |
| 2276 | nextChild.previousSibling = newLast; |
| 2277 | } |
| 2278 | do{ |
| 2279 | newFirst.parentNode = parentNode; |
| 2280 | }while(newFirst !== newLast && (newFirst= newFirst.nextSibling)) |
| 2281 | _onUpdateChild(parentNode.ownerDocument||parentNode,parentNode); |
| 2282 | if (newChild.nodeType == DOCUMENT_FRAGMENT_NODE) { |
| 2283 | newChild.firstChild = newChild.lastChild = null; |
| 2284 | } |
| 2285 | return newChild; |
| 2286 | } |
| 2287 | function _appendSingleChild(parentNode,newChild){ |
| 2288 | var cp = newChild.parentNode; |
| 2289 | if(cp){ |
no test coverage detected