UNPKG

avalon2

Version:

an elegant efficient express mvvm framework

337 lines (336 loc) • 10.8 kB
<!doctype html> <html lang="en"> <head> <title>Code coverage report for dom/attr/compact.js</title> <meta charset="utf-8" /> <link rel="stylesheet" href="../../prettify.css" /> <link rel="stylesheet" href="../../base.css" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <style type='text/css'> .coverage-summary .sorter { background-image: url(../../sort-arrow-sprite.png); } </style> </head> <body> <div class='wrapper'> <div class='pad1'> <h1> <a href="../../index.html">all files</a> / <a href="index.html">dom/attr/</a> compact.js </h1> <div class='clearfix'> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Statements</span> <span class='fraction'>41/41</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Branches</span> <span class='fraction'>32/32</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Functions</span> <span class='fraction'>3/3</span> </div> <div class='fl pad1y space-right2'> <span class="strong">100% </span> <span class="quiet">Lines</span> <span class='fraction'>41/41</span> </div> <div class='fl pad1y'> <span class="strong">2 statements, 2 branches</span> <span class="quiet">Ignored</span> &nbsp;&nbsp;&nbsp;&nbsp; </div> </div> </div> <div class='status-line high'></div> <pre><table class="coverage"> <tr><td class="line-count quiet">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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90</td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-yes">32×</span> <span class="cline-any cline-yes">69×</span> <span class="cline-any cline-yes">69×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">69×</span> <span class="cline-any cline-yes">5×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">64×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">64×</span> <span class="cline-any cline-yes">15×</span> <span class="cline-any cline-yes">3×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">15×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">64×</span> <span class="cline-any cline-yes">11×</span> <span class="cline-any cline-yes">11×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">53×</span> <span class="cline-any cline-yes">2×</span> <span class="cline-any cline-yes">2×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">51×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">51×</span> <span class="cline-any cline-yes">24×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">2×</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">24×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">27×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-yes">51×</span> <span class="cline-any cline-yes">51×</span> <span class="cline-any cline-yes">14×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">37×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">1×</span> <span class="cline-any cline-yes">11×</span> <span class="cline-any cline-yes">5×</span> <span class="cline-any cline-yes">5×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-yes">6×</span> <span class="cline-any cline-neutral">&nbsp;</span> <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { avalon, window, document } from '../../seed/core' import { propMap } from './propMap' import { isVML } from './isVML' import { compactParseJSON } from './parseJSON.compact' &nbsp; var rsvg = /^\[object SVG\w*Element\]$/ var ramp = /&amp;amp;/g export function updateAttrs(node, attrs) { for (var attrName in attrs) { try { var val = attrs[attrName] // 处理路径属性 /* istanbul ignore if*/ &nbsp; //处理HTML5 data-*属性 SVG if (attrName.indexOf('data-') === 0 || rsvg.test(node)) { node.setAttribute(attrName, val) } else { var propName = propMap[attrName] || attrName /* istanbul ignore if */ if (typeof node[propName] === 'boolean') { if(propName === 'checked'){ node.defaultChecked = !!val } node[propName] = !!val //布尔属性必须使用el.xxx = true|false方式设值 //如果为false, IE全系列下相当于setAttribute(xxx,''), //会影响到样式,需要进一步处理 } &nbsp; if (val === false) { //移除属性 node.removeAttribute(propName) continue } //IE6中classNamme, htmlFor等无法检测它们为内建属性  if (avalon.msie &lt; 8 &amp;&amp; /[A-Z]/.test(propName)) { node[propName] = val + '' continue } //SVG只能使用setAttribute(xxx, yyy), VML只能使用node.xxx = yyy , //HTML的固有属性必须node.xxx = yyy /* istanbul ignore next */ var isInnate = (!avalon.modern &amp;&amp; <span class="branch-1 cbranch-skip" title="branch not covered" >isVML(node))</span> ? <span class="branch-0 cbranch-skip" title="branch not covered" >true </span>: isInnateProps(node.nodeName, attrName) if (isInnate) { if (attrName === 'href' || attrName === 'src') { /* istanbul ignore if */ if (avalon.msie &lt; 8) { val = String(val).replace(ramp, '&amp;') //处理IE67自动转义的问题 } } node[propName] = val + '' } else { node.setAttribute(attrName, val) } } } catch (e) { // 对象不支持此属性或方法 src https://github.com/ecomfe/zrender // 未知名称。\/n // e.message大概这样,需要trim //IE6-8,元素节点不支持其他元素节点的内置属性,如src, href, for /* istanbul ignore next */ <span class="cstat-skip" title="statement not covered" > avalon.log(String(e.message).trim(), attrName, val)</span> } } } var innateMap = {} &nbsp; function isInnateProps(nodeName, attrName) { var key = nodeName + ":" + attrName if (key in innateMap) { return innateMap[key] } return innateMap[key] = (attrName in document.createElement(nodeName)) } try { avalon.parseJSON = JSON.parse } catch (e) { /* istanbul ignore next */ <span class="cstat-skip" title="statement not covered" > avalon.parseJSON = compactParseJSON</span> } &nbsp; avalon.fn.attr = function(name, value) { if (arguments.length === 2) { this[0].setAttribute(name, value) return this } else { return this[0].getAttribute(name) } }</pre></td></tr> </table></pre> <div class='push'></div><!-- for sticky footer --> </div><!-- /wrapper --> <div class='footer quiet pad2 space-top1 center small'> Code coverage generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Tue Dec 13 2016 18:10:11 GMT+0800 (CST) </div> </div> <script src="../../prettify.js"></script> <script> window.onload = function () { if (typeof prettyPrint === 'function') { prettyPrint(); } }; </script> <script src="../../sorter.js"></script> </body> </html>