all files / dom/shim/ fixClone.js

100% Statements 32/32
100% Branches 28/28
100% Functions 3/3
100% Lines 32/32
11 statements, 13 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59      52×   52×   52×   52×     48×       48× 44× 12×                         52×        
import {rcheckedType} from '../rcheckedType'
 
 /* istanbul ignore next */
function fixElement(dest, src) {
    Iif (dest.nodeType !== 1) {
        return
    }
    var nodeName = dest.nodeName.toLowerCase()
 
     Iif ( nodeName === "script" ) {
         if( dest.text !== src.text){
             dest.type = "noexec"
             dest.text = src.text;
             dest.type = src.type || ""
        }
     }else if (nodeName === 'object') {
        var params = src.childNodes
        Iif (dest.childNodes.length !== params.length) {
            avalon.clearHTML(dest)
            for(var i = 0, el ; el = params[i++]; ) {
                dest.appendChild(el.cloneNode(true))
            }
        }
    } else Iif (nodeName === 'input' && rcheckedType.test(src.nodeName)) {
 
        dest.defaultChecked = dest.checked = src.checked
        if (dest.value !== src.value) {
            dest.value = src.value
        }
 
    } else if (nodeName === 'option') {
        dest.defaultSelected = dest.selected = src.defaultSelected
    } else if (nodeName === 'input' || nodeName === 'textarea') {
        dest.defaultValue = src.defaultValue
    }
}
 
 /* istanbul ignore next */
function getAll(context) {
    return typeof context.getElementsByTagName !== 'undefined' ?
            context.getElementsByTagName('*') :
            typeof context.querySelectorAll !== 'undefined' ?
            context.querySelectorAll('*') : []
}
 
 /* istanbul ignore next */
export function fixClone(src) {
    var target = src.cloneNode(true)
    //http://www.myexception.cn/web/665613.html
   // target.expando = null
    var t = getAll(target)
    var s = getAll(src)
    for(var i = 0; i < s.length; i++){
          fixElement(t[i], s[i])
    }
    return target
}