Hatena::ブログ(Diary)

latest log このページをアンテナに追加 RSSフィード

2009-12-03

window.xconfig の修正

uupaa.js 0.7 の修正履歴です。興味がない方は読み飛ばしてください。

window.xconfig を定義すると大まかな挙動を設定できる

window.xconfig を uupaa.js ロード前に定義すると、大まかな挙動を設定できます。

現在のところ、以下の設定項目があります(変更適用後のものです)

<script>
window.xconfig = {
  aria: 0,        // @param Number(= 0): 1 is enable WAI-ARIA
  debug: 0,       // @param Number(= 0): 1 is debug mode, 0 is normal mode
  light: 1,       // @param Number(= 1): 1 is light weight mode
  altcss: 0,      // @param Number/Function(= 0): altcss mode
                  //                     0 is auto, callback function
  consel: 0,      // @param Number(= 1): 1 is enable conditional selector
  cssexpr: 0,     // @param Number(= 0): 1 is enable css-expression, 0 is disable
  imgdir: "img",  // @param String(= "img"): image dir
  visited: 0      // @param Number(= 0): 1 is E:visited activate
};
</script>
<script src="uupaa.0.7.js"></script>
<script>
function xboot(uu) {
  ....
}
</script>

さきほど、以下の変更を行いました

  • window.xconfig.css3maxmin 削除し、window.xconfig.cssexpr を追加
  • window.xconfig.css3markup を window.xconfig.altcss に名前を変更
    • 値には 0 または、配列を返す関数を設定できます

window.xconfig.altcss に関数を設定できるようになったので、「Google Chrome2+, Safari4+, Firefox3.5+ なら、ブラウザネイティブに実装している CSS3 の機能を使いたいので、altcss を OFF にしたい」 といった場合に、以下のように書けます。

<style>
html.ifadvanced .dropshadow { /* Advanced Browser 用のスタイル */
 -webkit-box-shadow: ... /* ブラウザの機能で box-shadow をレンダリング */
 -moz-box-shadow: ...
}
html.ifclassic .dropshadow { /* Classic Browser(非 Advanced Browser)用のスタイル */
 -uu-box-shadow: ...    /* altcss の機能で box-shadow をレンダリング */
}
</style>
<script>
window.xconfig = {
  altcss: function(uu) {
    if (uu.ver.advanced) { // uu.ver.advanced は Google Chrome2+, Safari4+, Firefox3.5+ で true
      return [-1, -1]; // [-1, -1] を返すと、altcss の機能(マークアップ, レンダリング)を両方 off にできる
    }
    return [0, 0]; // [0, 0] で altcss は自動的に適用される
  }
};
</script>
<script src="uupaa.0.7.js"></script>
<script>
function xboot(uu) {
  ....
}
</script>

デモ

http://pigs.sourceforge.jp/blog/20091203/altcssoff.htm

IE, Opera, Firefox3, Safari3.x で見た場合は altcss の機能を使って影を描画し、

f:id:uupaa:20091203181014p:image

Firefox3.5, Safari4, Google Chrome なら、ブラウザの機能を使って描画します。

f:id:uupaa:20091203181419p:image

修正前

// uu.css3.js

uu.ie     && (uu.ver.ua >= 6)                       && (++_mark, ++_plus);
uu.opera  && (uu.ver.ua >= 9.5)                     && ++_plus;
uu.gecko  && (uu.ver.re >  1.8 && uu.ver.re <= 1.9) && ++_mark;
uu.gecko  && (uu.ver.re >  1.8)                     && ++_plus;
uu.webkit && (uu.ver.re >= 522 && uu.ver.re <  530) && ++_mark;
uu.webkit && (uu.ver.re >= 522)                     && ++_plus;

switch (uu.config.css3markup) {
case -1: _mark = 0; break;
case  1: _mark = 1;
}

修正後

// uu.css3.js

// +------------+----------------+---------------+
// |            | mark = 1       | plus = 1      |
// +------------+----------------+---------------+
// | IE         | 6, 7, 8        | 6, 7, 8       |
// | Opera      |                | 9.5 +         |
// | Gecko      | 1.81 ~ 1.9     | 1.81 +        |
// | Webkit     | 522 ~ 529      | 522 +         |
// +------------+----------------+---------------+
(function() {
  uu.ie     && (uu.ver.ua >= 6)                       && (++_mark, ++_plus);
  uu.opera  && (uu.ver.ua >= 9.5)                     && ++_plus;
  uu.gecko  && (uu.ver.re >  1.8 && uu.ver.re <= 1.9) && ++_mark;
  uu.gecko  && (uu.ver.re >  1.8)                     && ++_plus;
  uu.webkit && (uu.ver.re >= 522 && uu.ver.re <  530) && ++_mark;
  uu.webkit && (uu.ver.re >= 522)                     && ++_plus;

  // http://d.hatena.ne.jp/uupaa/20091203/1259828564
  if (uu.isfunc(uu.config.altcss)) {
    // 0 is auto, 1 is enable, -1 is disable
    var ary = uu.config.altcss(uu); // @return Array: [mark, plus]

    _mark = { "-1": 0, 0: _mark, 1: 1 }[ary[0]];
    _plus = { "-1": 0, 0: _plus, 1: 1 }[ary[1]];
  }
})();

この変更は次回のリリースから適用されます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト

コメントを書くには、なぞなぞ認証に回答する必要があります。

トラックバック - http://d.hatena.ne.jp/uupaa/20091203/1259828564