ブラウザチェックはヘビロテの外で
こういうコードではなく、
/** 不透明度の設定 * * @param element elm 要素を指定します。 * @param number opacity 0.0 〜 1.0の数字を指定します。 * @return element 要素を返します。 */ setOpacity: function(elm, opacity) { if (typeof elm.style.opacity !== "undefined") { elm.style.opacity = opacity; } else if (typeof elm.filters !== "undefined") { if (elm.filters.alpha) { elm.filters.alpha.opacity = opacity * 100; } else { elm.style.filter += " alpha(opacity=" + (opacity * 100) + ")"; } } return elm; }
業界非標準なIEシリーズが投下され続ける(困った)現状では、こういうコードが望ましいのではないかと、
/** 不透明度の設定 * * @param element elm 要素を指定します。 * @param number opacity 0.0 〜 1.0の数字を指定します。 * @return element 要素を返します。 */ uu.setOpacity = function(elm, opacity) { return elm; } // browser override if (typeof document.body.style.opacity !== "undefined") { // for Firefox, Opera, Safari uu.setOpacity = function(elm, opacity) { elm.style.opacity = opacity; return elm; } } else if (typeof document.body.filters !== "undefined") { // for IE uu.setOpacity = function(elm, opacity) { if (elm.filters.alpha) { elm.filters.alpha.opacity = opacity * 100; } else { elm.style.filter += " alpha(opacity=" + (opacity * 100) + ")"; } return elm; } }
ブラウザの違いを実行中に判断せずに、標準/非標準なブラウザで別のコードを用意しておいて、その中のひとつを使いましょう(BrowserでメソッドをOverrideしましょう)と。
といっても全部これ式だと不経済なんで、ループ実行される所はこういうチューンもアリでしょ? と。
ライブラリ的なコードは、1行1行がフラットな仕事量を受け持っているのではなく、圧縮された(濃ゆい)状態の部分が必ずあるので、最適化しちゃおうと。