dom-ie-style.js.html revision f358a89c7ef742d7013a45c549ad82c735140013
<head>
</head>
<body id="yahoo-com">
<div id="doc3" class="yui-t2">
<div id="hd">
<h3>dom <span class="subtitle">3.1.0</span></h3>
> dom-ie-style.js (source view)
<form onsubmit="return false">
<div id="propertysearch">
Search: <input autocomplete="off" id="searchinput" />
<div id="searchresults">
</div>
</div>
</form>
</div>
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<form action="#" name="yui-classopts-form" method="get" id="yui-classopts-form">
<fieldset>
<legend>Filters</legend>
<span class="classopts"><input type="checkbox" name="show_private" id="show_private" /> <label for="show_private">Show Private</label></span>
<span class="classopts"><input type="checkbox" name="show_protected" id="show_protected" /> <label for="show_protected">Show Protected</label></span>
<span class="classopts"><input type="checkbox" name="show_deprecated" id="show_deprecated" /> <label for="show_deprecated">Show Deprecated</label></span>
</fieldset>
</form>
<div id="srcout">
<style>
#doc3 .classopts { display:none; }
</style>
<div class="highlight"><pre><span class="p">(</span><span class="kd">function</span><span class="p">(</span><span class="nx">Y</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">HAS_LAYOUT</span> <span class="o">=</span> <span class="s1">'hasLayout'</span><span class="p">,</span>
<span class="nx">PX</span> <span class="o">=</span> <span class="s1">'px'</span><span class="p">,</span>
<span class="nx">FILTER</span> <span class="o">=</span> <span class="s1">'filter'</span><span class="p">,</span>
<span class="nx">FILTERS</span> <span class="o">=</span> <span class="s1">'filters'</span><span class="p">,</span>
<span class="nx">OPACITY</span> <span class="o">=</span> <span class="s1">'opacity'</span><span class="p">,</span>
<span class="nx">AUTO</span> <span class="o">=</span> <span class="s1">'auto'</span><span class="p">,</span>
<span class="nx">BORDER_WIDTH</span> <span class="o">=</span> <span class="s1">'borderWidth'</span><span class="p">,</span>
<span class="nx">BORDER_TOP_WIDTH</span> <span class="o">=</span> <span class="s1">'borderTopWidth'</span><span class="p">,</span>
<span class="nx">BORDER_RIGHT_WIDTH</span> <span class="o">=</span> <span class="s1">'borderRightWidth'</span><span class="p">,</span>
<span class="nx">BORDER_BOTTOM_WIDTH</span> <span class="o">=</span> <span class="s1">'borderBottomWidth'</span><span class="p">,</span>
<span class="nx">BORDER_LEFT_WIDTH</span> <span class="o">=</span> <span class="s1">'borderLeftWidth'</span><span class="p">,</span>
<span class="nx">WIDTH</span> <span class="o">=</span> <span class="s1">'width'</span><span class="p">,</span>
<span class="nx">HEIGHT</span> <span class="o">=</span> <span class="s1">'height'</span><span class="p">,</span>
<span class="nx">TRANSPARENT</span> <span class="o">=</span> <span class="s1">'transparent'</span><span class="p">,</span>
<span class="nx">VISIBLE</span> <span class="o">=</span> <span class="s1">'visible'</span><span class="p">,</span>
<span class="nx">GET_COMPUTED_STYLE</span> <span class="o">=</span> <span class="s1">'getComputedStyle'</span><span class="p">,</span>
<span class="nx">UNDEFINED</span> <span class="o">=</span> <span class="kc">undefined</span><span class="p">,</span>
<span class="nx">documentElement</span> <span class="o">=</span> <span class="nx">Y</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">doc</span><span class="p">.</span><span class="nx">documentElement</span><span class="p">,</span>
<span class="nx">re_unit</span> <span class="o">=</span> <span class="sr">/^(\d[.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz|%){1}?/i</span><span class="p">,</span>
<span class="nx">isIE8</span> <span class="o">=</span> <span class="p">(</span><span class="nx">Y</span><span class="p">.</span><span class="nx">UA</span><span class="p">.</span><span class="nx">ie</span> <span class="o">>=</span> <span class="mi">8</span><span class="p">),</span>
<span class="nx">_getStyleObj</span> <span class="o">=</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="k">return</span> <span class="nx">node</span><span class="p">.</span><span class="nx">currentStyle</span> <span class="o">||</span> <span class="nx">node</span><span class="p">.</span><span class="nx">style</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">ComputedStyle</span> <span class="o">=</span> <span class="p">{</span>
<span class="nx">CUSTOM_STYLES</span><span class="o">:</span> <span class="p">{},</span>
<span class="nx">get</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">property</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">value</span> <span class="o">=</span> <span class="s1">''</span><span class="p">,</span>
<span class="nx">current</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">el</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">current</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">el</span><span class="p">)[</span><span class="nx">property</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">property</span> <span class="o">===</span> <span class="nx">OPACITY</span> <span class="o">&&</span> <span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">CUSTOM_STYLES</span><span class="p">[</span><span class="nx">OPACITY</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">CUSTOM_STYLES</span><span class="p">[</span><span class="nx">OPACITY</span><span class="p">].</span><span class="nx">get</span><span class="p">(</span><span class="nx">el</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">current</span> <span class="o">||</span> <span class="p">(</span><span class="nx">current</span><span class="p">.</span><span class="nx">indexOf</span> <span class="o">&&</span> <span class="nx">current</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">PX</span><span class="p">)</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// no need to convert</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">current</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">IE</span><span class="p">.</span><span class="nx">COMPUTED</span><span class="p">[</span><span class="nx">property</span><span class="p">])</span> <span class="p">{</span> <span class="c1">// use compute function</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">IE</span><span class="p">.</span><span class="nx">COMPUTED</span><span class="p">[</span><span class="nx">property</span><span class="p">](</span><span class="nx">el</span><span class="p">,</span> <span class="nx">property</span><span class="p">);</span>
<span class="p">}</span> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="nx">re_unit</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">current</span><span class="p">))</span> <span class="p">{</span> <span class="c1">// convert to pixel</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getPixel</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">property</span><span class="p">)</span> <span class="o">+</span> <span class="nx">PX</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">current</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">value</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">sizeOffsets</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">width</span><span class="o">:</span> <span class="p">[</span><span class="s1">'Left'</span><span class="p">,</span> <span class="s1">'Right'</span><span class="p">],</span>
<span class="nx">height</span><span class="o">:</span> <span class="p">[</span><span class="s1">'Top'</span><span class="p">,</span> <span class="s1">'Bottom'</span><span class="p">],</span>
<span class="nx">top</span><span class="o">:</span> <span class="p">[</span><span class="s1">'Top'</span><span class="p">],</span>
<span class="nx">bottom</span><span class="o">:</span> <span class="p">[</span><span class="s1">'Bottom'</span><span class="p">]</span>
<span class="p">},</span>
<span class="nx">getOffset</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">prop</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">current</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">el</span><span class="p">)[</span><span class="nx">prop</span><span class="p">],</span> <span class="c1">// value of "width", "top", etc.</span>
<span class="nx">capped</span> <span class="o">=</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">charAt</span><span class="p">(</span><span class="mi">0</span><span class="p">).</span><span class="nx">toUpperCase</span><span class="p">()</span> <span class="o">+</span> <span class="nx">prop</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="c1">// "Width", "Top", etc.</span>
<span class="nx">offset</span> <span class="o">=</span> <span class="s1">'offset'</span> <span class="o">+</span> <span class="nx">capped</span><span class="p">,</span> <span class="c1">// "offsetWidth", "offsetTop", etc.</span>
<span class="nx">pixel</span> <span class="o">=</span> <span class="s1">'pixel'</span> <span class="o">+</span> <span class="nx">capped</span><span class="p">,</span> <span class="c1">// "pixelWidth", "pixelTop", etc.</span>
<span class="nx">sizeOffsets</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">sizeOffsets</span><span class="p">[</span><span class="nx">prop</span><span class="p">],</span>
<span class="nx">mode</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">ownerDocument</span><span class="p">.</span><span class="nx">compatMode</span><span class="p">,</span>
<span class="nx">value</span> <span class="o">=</span> <span class="s1">''</span><span class="p">;</span>
<span class="c1">// IE pixelWidth incorrect for percent</span>
<span class="c1">// manually compute by subtracting padding and border from offset size</span>
<span class="c1">// NOTE: clientWidth/Height (size minus border) is 0 when current === AUTO so offsetHeight is used</span>
<span class="c1">// reverting to auto from auto causes position stacking issues (old impl)</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">current</span> <span class="o">===</span> <span class="nx">AUTO</span> <span class="o">||</span> <span class="nx">current</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="s1">'%'</span><span class="p">)</span> <span class="o">></span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">el</span><span class="p">[</span><span class="s1">'offset'</span> <span class="o">+</span> <span class="nx">capped</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">mode</span> <span class="o">!==</span> <span class="s1">'BackCompat'</span><span class="p">)</span> <span class="p">{</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sizeOffsets</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">-=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getPixel</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s1">'padding'</span> <span class="o">+</span> <span class="nx">sizeOffsets</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span>
<span class="nx">value</span> <span class="o">-=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getBorderWidth</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s1">'border'</span> <span class="o">+</span> <span class="nx">sizeOffsets</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'Width'</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">sizeOffsets</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">value</span> <span class="o">-=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getPixel</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s1">'padding'</span> <span class="o">+</span> <span class="nx">sizeOffsets</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
<span class="nx">value</span> <span class="o">-=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getBorderWidth</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="s1">'border'</span> <span class="o">+</span> <span class="nx">sizeOffsets</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">+</span> <span class="s1">'Width'</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// use style.pixelWidth, etc. to convert to pixels</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">el</span><span class="p">.</span><span class="nx">style</span><span class="p">[</span><span class="nx">pixel</span><span class="p">]</span> <span class="o">&&</span> <span class="o">!</span><span class="nx">el</span><span class="p">.</span><span class="nx">style</span><span class="p">[</span><span class="nx">prop</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">style</span><span class="p">[</span><span class="nx">prop</span><span class="p">]</span> <span class="o">=</span> <span class="nx">current</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">value</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">style</span><span class="p">[</span><span class="nx">pixel</span><span class="p">];</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">value</span> <span class="o">+</span> <span class="nx">PX</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">borderMap</span><span class="o">:</span> <span class="p">{</span>
<span class="nx">thin</span><span class="o">:</span> <span class="p">(</span><span class="nx">isIE8</span><span class="p">)</span> <span class="o">?</span> <span class="s1">'1px'</span> <span class="o">:</span> <span class="s1">'2px'</span><span class="p">,</span>
<span class="nx">medium</span><span class="o">:</span> <span class="p">(</span><span class="nx">isIE8</span><span class="p">)</span> <span class="o">?</span> <span class="s1">'3px'</span><span class="o">:</span> <span class="s1">'4px'</span><span class="p">,</span>
<span class="nx">thick</span><span class="o">:</span> <span class="p">(</span><span class="nx">isIE8</span><span class="p">)</span> <span class="o">?</span> <span class="s1">'5px'</span> <span class="o">:</span> <span class="s1">'6px'</span>
<span class="p">},</span>
<span class="nx">getBorderWidth</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">el</span><span class="p">,</span> <span class="nx">property</span><span class="p">,</span> <span class="nx">omitUnit</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">unit</span> <span class="o">=</span> <span class="nx">omitUnit</span> <span class="o">?</span> <span class="s1">''</span> <span class="o">:</span> <span class="nx">PX</span><span class="p">,</span>
<span class="nx">current</span> <span class="o">=</span> <span class="nx">el</span><span class="p">.</span><span class="nx">currentStyle</span><span class="p">[</span><span class="nx">property</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">current</span><span class="p">.</span><span class="nx">indexOf</span><span class="p">(</span><span class="nx">PX</span><span class="p">)</span> <span class="o"><</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// look up keywords if a border exists</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">borderMap</span><span class="p">[</span><span class="nx">current</span><span class="p">]</span> <span class="o">&&</span>
<span class="nx">el</span><span class="p">.</span><span class="nx">currentStyle</span><span class="p">.</span><span class="nx">borderStyle</span> <span class="o">!==</span> <span class="s1">'none'</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">current</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">borderMap</span><span class="p">[</span><span class="nx">current</span><span class="p">];</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span> <span class="c1">// otherwise no border (default is "medium")</span>
<span class="nx">current</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="p">(</span><span class="nx">omitUnit</span><span class="p">)</span> <span class="o">?</span> <span class="nb">parseFloat</span><span class="p">(</span><span class="nx">current</span><span class="p">)</span> <span class="o">:</span> <span class="nx">current</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">getPixel</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">att</span><span class="p">)</span> <span class="p">{</span>
<span class="c1">// use pixelRight to convert to px</span>
<span class="kd">var</span> <span class="nx">val</span> <span class="o">=</span> <span class="kc">null</span><span class="p">,</span>
<span class="nx">style</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">node</span><span class="p">),</span>
<span class="nx">styleRight</span> <span class="o">=</span> <span class="nx">style</span><span class="p">.</span><span class="nx">right</span><span class="p">,</span>
<span class="nx">current</span> <span class="o">=</span> <span class="nx">style</span><span class="p">[</span><span class="nx">att</span><span class="p">];</span>
<span class="nx">node</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">right</span> <span class="o">=</span> <span class="nx">current</span><span class="p">;</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">pixelRight</span><span class="p">;</span>
<span class="nx">node</span><span class="p">.</span><span class="nx">style</span><span class="p">.</span><span class="nx">right</span> <span class="o">=</span> <span class="nx">styleRight</span><span class="p">;</span> <span class="c1">// revert</span>
<span class="k">return</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">getMargin</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">att</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">val</span><span class="p">,</span>
<span class="nx">style</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">node</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">style</span><span class="p">[</span><span class="nx">att</span><span class="p">]</span> <span class="o">==</span> <span class="nx">AUTO</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getPixel</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">att</span><span class="p">);</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">val</span> <span class="o">+</span> <span class="nx">PX</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">getVisibility</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">att</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">current</span><span class="p">;</span>
<span class="k">while</span> <span class="p">(</span> <span class="p">(</span><span class="nx">current</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">currentStyle</span><span class="p">)</span> <span class="o">&&</span> <span class="nx">current</span><span class="p">[</span><span class="nx">att</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'inherit'</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// NOTE: assignment in test</span>
<span class="nx">node</span> <span class="o">=</span> <span class="nx">node</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">return</span> <span class="p">(</span><span class="nx">current</span><span class="p">)</span> <span class="o">?</span> <span class="nx">current</span><span class="p">[</span><span class="nx">att</span><span class="p">]</span> <span class="o">:</span> <span class="nx">VISIBLE</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">getColor</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">att</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">current</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">node</span><span class="p">)[</span><span class="nx">att</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">current</span> <span class="o">||</span> <span class="nx">current</span> <span class="o">===</span> <span class="nx">TRANSPARENT</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">elementByAxis</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="s1">'parentNode'</span><span class="p">,</span> <span class="kc">null</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">parent</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">current</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">parent</span><span class="p">)[</span><span class="nx">att</span><span class="p">];</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">current</span> <span class="o">&&</span> <span class="nx">current</span> <span class="o">!==</span> <span class="nx">TRANSPARENT</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">node</span> <span class="o">=</span> <span class="nx">parent</span><span class="p">;</span>
<span class="k">return</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
<span class="p">});</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">Y</span><span class="p">.</span><span class="nx">Color</span><span class="p">.</span><span class="nx">toRGB</span><span class="p">(</span><span class="nx">current</span><span class="p">);</span>
<span class="p">},</span>
<span class="nx">getBorderColor</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">att</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">current</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">node</span><span class="p">),</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">current</span><span class="p">[</span><span class="nx">att</span><span class="p">]</span> <span class="o">||</span> <span class="nx">current</span><span class="p">.</span><span class="nx">color</span><span class="p">;</span>
<span class="k">return</span> <span class="nx">Y</span><span class="p">.</span><span class="nx">Color</span><span class="p">.</span><span class="nx">toRGB</span><span class="p">(</span><span class="nx">Y</span><span class="p">.</span><span class="nx">Color</span><span class="p">.</span><span class="nx">toHex</span><span class="p">(</span><span class="nx">val</span><span class="p">));</span>
<span class="p">}</span>
<span class="p">},</span>
<span class="c1">//fontSize: getPixelFont,</span>
<span class="nx">IEComputed</span> <span class="o">=</span> <span class="p">{};</span>
<span class="c1">// use alpha filter for IE opacity</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">Y</span><span class="p">.</span><span class="nx">UA</span><span class="p">.</span><span class="nx">ie</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">CUSTOM_STYLES</span><span class="p">[</span><span class="nx">OPACITY</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
<span class="nx">get</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">val</span> <span class="o">=</span> <span class="mi">100</span><span class="p">;</span>
<span class="k">try</span> <span class="p">{</span> <span class="c1">// will error if no DXImageTransform</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">node</span><span class="p">[</span><span class="nx">FILTERS</span><span class="p">][</span><span class="s1">'DXImageTransform.Microsoft.Alpha'</span><span class="p">][</span><span class="nx">OPACITY</span><span class="p">];</span>
<span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span>
<span class="k">try</span> <span class="p">{</span> <span class="c1">// make sure its in the document</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">node</span><span class="p">[</span><span class="nx">FILTERS</span><span class="p">](</span><span class="s1">'alpha'</span><span class="p">)[</span><span class="nx">OPACITY</span><span class="p">];</span>
<span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">'getStyle: IE opacity filter not found; returning 1'</span><span class="p">,</span> <span class="s1">'warn'</span><span class="p">,</span> <span class="s1">'dom-style'</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="k">return</span> <span class="nx">val</span> <span class="o">/</span> <span class="mi">100</span><span class="p">;</span>
<span class="p">},</span>
<span class="nx">set</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">style</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">current</span><span class="p">,</span>
<span class="nx">styleObj</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nx">val</span> <span class="o">===</span> <span class="s1">''</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// normalize inline style behavior</span>
<span class="nx">styleObj</span> <span class="o">=</span> <span class="nx">_getStyleObj</span><span class="p">(</span><span class="nx">node</span><span class="p">);</span>
<span class="nx">current</span> <span class="o">=</span> <span class="p">(</span><span class="nx">OPACITY</span> <span class="k">in</span> <span class="nx">styleObj</span><span class="p">)</span> <span class="o">?</span> <span class="nx">styleObj</span><span class="p">[</span><span class="nx">OPACITY</span><span class="p">]</span> <span class="o">:</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// revert to original opacity</span>
<span class="nx">val</span> <span class="o">=</span> <span class="nx">current</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">if</span> <span class="p">(</span><span class="k">typeof</span> <span class="nx">style</span><span class="p">[</span><span class="nx">FILTER</span><span class="p">]</span> <span class="o">==</span> <span class="s1">'string'</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// in case not appended</span>
<span class="nx">style</span><span class="p">[</span><span class="nx">FILTER</span><span class="p">]</span> <span class="o">=</span> <span class="s1">'alpha('</span> <span class="o">+</span> <span class="nx">OPACITY</span> <span class="o">+</span> <span class="s1">'='</span> <span class="o">+</span> <span class="nx">val</span> <span class="o">*</span> <span class="mi">100</span> <span class="o">+</span> <span class="s1">')'</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">node</span><span class="p">.</span><span class="nx">currentStyle</span> <span class="o">||</span> <span class="o">!</span><span class="nx">node</span><span class="p">.</span><span class="nx">currentStyle</span><span class="p">[</span><span class="nx">HAS_LAYOUT</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">style</span><span class="p">.</span><span class="nx">zoom</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// needs layout </span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="k">try</span> <span class="p">{</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">doc</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'div'</span><span class="p">).</span><span class="nx">style</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="s1">'-1px'</span><span class="p">;</span>
<span class="p">}</span> <span class="k">catch</span><span class="p">(</span><span class="nx">e</span><span class="p">)</span> <span class="p">{</span> <span class="c1">// IE throws error on invalid style set; trap common cases</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">CUSTOM_STYLES</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="p">{</span>
<span class="nx">set</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">style</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">floatVal</span> <span class="o">=</span> <span class="nb">parseFloat</span><span class="p">(</span><span class="nx">val</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">isNaN</span><span class="p">(</span><span class="nx">floatVal</span><span class="p">)</span> <span class="o">||</span> <span class="nx">floatVal</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">style</span><span class="p">.</span><span class="nx">height</span> <span class="o">=</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">'invalid style value for height: '</span> <span class="o">+</span> <span class="nx">val</span><span class="p">,</span> <span class="s1">'warn'</span><span class="p">,</span> <span class="s1">'dom-style'</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">CUSTOM_STYLES</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="p">{</span>
<span class="nx">set</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">node</span><span class="p">,</span> <span class="nx">val</span><span class="p">,</span> <span class="nx">style</span><span class="p">)</span> <span class="p">{</span>
<span class="kd">var</span> <span class="nx">floatVal</span> <span class="o">=</span> <span class="nb">parseFloat</span><span class="p">(</span><span class="nx">val</span><span class="p">);</span>
<span class="k">if</span> <span class="p">(</span><span class="nb">isNaN</span><span class="p">(</span><span class="nx">floatVal</span><span class="p">)</span> <span class="o">||</span> <span class="nx">floatVal</span> <span class="o">>=</span> <span class="mi">0</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">style</span><span class="p">.</span><span class="nx">width</span> <span class="o">=</span> <span class="nx">val</span><span class="p">;</span>
<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="s1">'invalid style value for width: '</span> <span class="o">+</span> <span class="nx">val</span><span class="p">,</span> <span class="s1">'warn'</span><span class="p">,</span> <span class="s1">'dom-style'</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="p">}</span>
<span class="c1">// TODO: top, right, bottom, left</span>
<span class="nx">IEComputed</span><span class="p">[</span><span class="nx">WIDTH</span><span class="p">]</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">[</span><span class="nx">HEIGHT</span><span class="p">]</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getOffset</span><span class="p">;</span>
<span class="nx">IEComputed</span><span class="p">.</span><span class="nx">color</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">.</span><span class="nx">backgroundColor</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getColor</span><span class="p">;</span>
<span class="nx">IEComputed</span><span class="p">[</span><span class="nx">BORDER_WIDTH</span><span class="p">]</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">[</span><span class="nx">BORDER_TOP_WIDTH</span><span class="p">]</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">[</span><span class="nx">BORDER_RIGHT_WIDTH</span><span class="p">]</span> <span class="o">=</span>
<span class="nx">IEComputed</span><span class="p">[</span><span class="nx">BORDER_BOTTOM_WIDTH</span><span class="p">]</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">[</span><span class="nx">BORDER_LEFT_WIDTH</span><span class="p">]</span> <span class="o">=</span>
<span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getBorderWidth</span><span class="p">;</span>
<span class="nx">IEComputed</span><span class="p">.</span><span class="nx">marginTop</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">.</span><span class="nx">marginRight</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">.</span><span class="nx">marginBottom</span> <span class="o">=</span>
<span class="nx">IEComputed</span><span class="p">.</span><span class="nx">marginLeft</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getMargin</span><span class="p">;</span>
<span class="nx">IEComputed</span><span class="p">.</span><span class="nx">visibility</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getVisibility</span><span class="p">;</span>
<span class="nx">IEComputed</span><span class="p">.</span><span class="nx">borderColor</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">.</span><span class="nx">borderTopColor</span> <span class="o">=</span>
<span class="nx">IEComputed</span><span class="p">.</span><span class="nx">borderRightColor</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">.</span><span class="nx">borderBottomColor</span> <span class="o">=</span>
<span class="nx">IEComputed</span><span class="p">.</span><span class="nx">borderLeftColor</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">getBorderColor</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nx">Y</span><span class="p">.</span><span class="nx">config</span><span class="p">.</span><span class="nx">win</span><span class="p">[</span><span class="nx">GET_COMPUTED_STYLE</span><span class="p">])</span> <span class="p">{</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">[</span><span class="nx">GET_COMPUTED_STYLE</span><span class="p">]</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">.</span><span class="nx">get</span><span class="p">;</span>
<span class="p">}</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">namespace</span><span class="p">(</span><span class="s1">'DOM.IE'</span><span class="p">);</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">IE</span><span class="p">.</span><span class="nx">COMPUTED</span> <span class="o">=</span> <span class="nx">IEComputed</span><span class="p">;</span>
<span class="nx">Y</span><span class="p">.</span><span class="nx">DOM</span><span class="p">.</span><span class="nx">IE</span><span class="p">.</span><span class="nx">ComputedStyle</span> <span class="o">=</span> <span class="nx">ComputedStyle</span><span class="p">;</span>
<span class="p">})(</span><span class="nx">Y</span><span class="p">);</span>
</pre></div>
</div>
</div>
</div>
<div class="yui-b">
<div class="nav">
<div id="moduleList" class="module">
<h4>Modules</h4>
<ul class="content">
<li class=""><a href="module_classnamemanager.html" title="classnamemanager">classnamemanager</a></li>
<li class=""><a href="module_node-focusmanager.html" title="node-focusmanager">node-focusmanager</a></li>
<li class=""><a href="module_widget-position-align.html" title="widget-position-align">widget-position-align</a></li>
<li class=""><a href="module_widget-position-constrain.html" title="widget-position-constrain">widget-position-constrain</a></li>
</ul>
</div>
<div id="classList" class="module">
<h4>Classes</h4>
<ul class="content">
</ul>
</div>
<div id="fileList" class="module">
<h4>Files</h4>
<ul class="content">
<li class="selected"><a href="dom-ie-style.js.html" title="dom-ie-style.js">dom-ie-style.js</a></li>
<li class=""><a href="selector-native.js.html" title="selector-native.js">selector-native.js</a></li>
</ul>
</div>
</div>
</div>
</div>
<div id="ft">
<hr />
Copyright © 2010 Yahoo! Inc. All rights reserved.
</div>
</div>
<script type="text/javascript">
var ALL_YUI_PROPS = [{"access": "", "host": "DOM", "name": "addClass", "url": "DOM.html#method_addClass", "type": "method"}, {"access": "", "host": "DOM", "name": "addHTML", "url": "DOM.html#method_addHTML", "type": "method"}, {"access": "", "host": "Selector", "name": "ancestor", "url": "Selector.html#method_ancestor", "type": "method"}, {"access": "private", "host": "DOM", "name": "_bruteContains", "url": "DOM.html#method__bruteContains", "type": "method"}, {"access": "", "host": "DOM", "name": "byId", "url": "DOM.html#method_byId", "type": "method"}, {"access": "", "host": "DOM", "name": "contains", "url": "DOM.html#method_contains", "type": "method"}, {"access": "", "host": "DOM", "name": "create", "url": "DOM.html#method_create", "type": "method"}, {"access": "", "host": "DOM", "name": "docHeight", "url": "DOM.html#method_docHeight", "type": "method"}, {"access": "", "host": "DOM", "name": "docScrollX", "url": "DOM.html#method_docScrollX", "type": "method"}, {"access": "", "host": "DOM", "name": "docScrollY", "url": "DOM.html#method_docScrollY", "type": "method"}, {"access": "", "host": "DOM", "name": "docWidth", "url": "DOM.html#method_docWidth", "type": "method"}, {"access": "", "host": "DOM", "name": "elementByAxis", "url": "DOM.html#method_elementByAxis", "type": "method"}, {"access": "", "host": "DOM", "name": "getAttibute", "url": "DOM.html#method_getAttibute", "type": "method"}, {"access": "", "host": "DOM", "name": "getComputedStyle", "url": "DOM.html#method_getComputedStyle", "type": "method"}, {"access": "private", "host": "DOM", "name": "_getDoc", "url": "DOM.html#method__getDoc", "type": "method"}, {"access": "private", "host": "DOM", "name": "_getRegExp", "url": "DOM.html#method__getRegExp", "type": "method"}, {"access": "", "host": "DOM", "name": "getStyle", "url": "DOM.html#method_getStyle", "type": "method"}, {"access": "", "host": "DOM", "name": "getText", "url": "DOM.html#method_getText", "type": "method"}, {"access": "private", "host": "DOM", "name": "_getWin", "url": "DOM.html#method__getWin", "type": "method"}, {"access": "", "host": "DOM", "name": "getX", "url": "DOM.html#method_getX", "type": "method"}, {"access": "", "host": "DOM", "name": "getXY", "url": "DOM.html#method_getXY", "type": "method"}, {"access": "", "host": "DOM", "name": "getY", "url": "DOM.html#method_getY", "type": "method"}, {"access": "", "host": "DOM", "name": "hasClass", "url": "DOM.html#method_hasClass", "type": "method"}, {"access": "", "host": "DOM", "name": "inDoc", "url": "DOM.html#method_inDoc", "type": "method"}, {"access": "", "host": "DOM", "name": "inRegion", "url": "DOM.html#method_inRegion", "type": "method"}, {"access": "", "host": "DOM", "name": "intersect", "url": "DOM.html#method_intersect", "type": "method"}, {"access": "", "host": "DOM", "name": "inViewportRegion", "url": "DOM.html#method_inViewportRegion", "type": "method"}, {"access": "", "host": "Selector", "name": "operators", "url": "Selector.html#property_operators", "type": "property"}, {"access": "", "host": "Selector", "name": "PARENT_NODE", "url": "Selector.html#property_PARENT_NODE", "type": "property"}, {"access": "", "host": "Selector", "name": "query", "url": "Selector.html#method_query", "type": "method"}, {"access": "", "host": "DOM", "name": "region", "url": "DOM.html#method_region", "type": "method"}, {"access": "", "host": "DOM", "name": "removeClass", "url": "DOM.html#method_removeClass", "type": "method"}, {"access": "", "host": "DOM", "name": "replaceClass", "url": "DOM.html#method_replaceClass", "type": "method"}, {"access": "", "host": "DOM", "name": "setAttibute", "url": "DOM.html#method_setAttibute", "type": "method"}, {"access": "", "host": "DOM", "name": "setHeight", "url": "DOM.html#method_setHeight", "type": "method"}, {"access": "", "host": "DOM", "name": "setStyle", "url": "DOM.html#method_setStyle", "type": "method"}, {"access": "", "host": "DOM", "name": "setStyles", "url": "DOM.html#method_setStyles", "type": "method"}, {"access": "", "host": "DOM", "name": "setText", "url": "DOM.html#method_setText", "type": "method"}, {"access": "", "host": "DOM", "name": "setWidth", "url": "DOM.html#method_setWidth", "type": "method"}, {"access": "", "host": "DOM", "name": "setX", "url": "DOM.html#method_setX", "type": "method"}, {"access": "", "host": "DOM", "name": "setXY", "url": "DOM.html#method_setXY", "type": "method"}, {"access": "", "host": "DOM", "name": "setY", "url": "DOM.html#method_setY", "type": "method"}, {"access": "", "host": "Selector", "name": "shorthand", "url": "Selector.html#property_shorthand", "type": "property"}, {"access": "", "host": "DOM", "name": "swapXY", "url": "DOM.html#method_swapXY", "type": "method"}, {"access": "", "host": "DOM", "name": "toggleClass", "url": "DOM.html#method_toggleClass", "type": "method"}, {"access": "", "host": "Selector", "name": "_tokenize", "url": "Selector.html#method__tokenize", "type": "method"}, {"access": "", "host": "DOM", "name": "viewportRegion", "url": "DOM.html#method_viewportRegion", "type": "method"}, {"access": "", "host": "DOM", "name": "winHeight", "url": "DOM.html#method_winHeight", "type": "method"}, {"access": "", "host": "DOM", "name": "winWidth", "url": "DOM.html#method_winWidth", "type": "method"}];
</script>
</body>
</html>