Opera10が出たので、Opera9.2x のサポートを止めます。

uuAltCSS.js, uuCanvas.js, uuQuery.js でサポートするブラウザを変更します。

  • IE6 〜 IE8
  • Opera9.5x 〜 Opera10.0
    • Opera9.2x は今後サポートしません。
  • Firefox2.0 〜 Firefox3.5
  • Safari3.1 〜 Safari4.0
    • Safari3.0 はサポートしません。
  • Google Chrome2 〜 Google Chrome4
    • Chrome1 はサポートしません。


また、Opera9.2x 対策として入れ込んでいる以下のコード片をリポジトリから削除する予定です。

Opera9.2x の getComputedStyle("width") が他のブラウザと異なりボーダー幅を含んだサイズを報告する件に対するパッチ("height" も同様)

// uuMeta.style.getPixel
function getPixelOpera92(node, prop) {
  switch (prop) {
  case "width":  return getSize(node).w - getBorderSize(node, 0).w;
  case "height": return getSize(node).h - getBorderSize(node, 0).h;
  }
  return getPixel(node, prop);
}

Opera9.2x で スタイルシートの末尾にしか insertRule が行えないバグに対するパッチ

  // uuMeta.style.sheet.insertRule - insert CSS rule
  insertRule: function(id,      // @param String: StyleSheet id
                       expr,    // @param String: css selector
                       decl,    // @param String: css declaration
                       index) { // @param Number(= last): insertion position
                                // @return Number: inserted rule index
                                //                 or -1(error)
    if (!(id in _sheet)) { return -1; }

    var r = _sheet[id];
    if (_ua.ie) {
      index = index === void 0 ? r.rules.length : index;
      r.addRule(expr.trim(), decl.trim(), index);
    } else {
      index = index === void 0 ? r.sheet.cssRules.length : index;
      index = r.sheet.insertRule(expr + "{" + decl + "}", index);
      if (_ua.opera && _ua.uaver < 9.5) { // Opera90 bug
        index = r.sheet.cssRules.length - 1;
      }
    }
    return index;
  },

Opera9.2x の JavaScript パーサが正規表現構文とコメント構文を正しくパースできない件に対するガードコメント

// Opera9.2x bugfix http://twitter.com/uupaa/status/3513418902
//  PSEUDO      = /^(?::(not)\((?:(\*)|(\w+)|[#\.][a-z_\u00C0-\uFFEE\-][\w\u00C0-\uFFEE\-]*|\[\s*(?:[^~\^$*|=!\/\s]+\s*[~\^$*|!\/]?\=\s*(["'])?.*?\4i?|[^\]\s]+)\s*\]|:contains\((["'])?.*?\5\)|::?[\w\-]+(?:\([^\u0029]+\))?)\)|:contains\((["'])?(.*?)\6\)|::?([\w\-]+)(?:\((.*?)\))?)/i,
    PSEUDO      = /^(?::(not)\((?:(\*)|(\w+)|[#\.][a-z_\u00C0-\uFFEE\-][\w\u00C0-\uFFEE\-]*|\[\s*(?:[^~\^$*|=!\/\s]+\s*[~\^$*|!\/]?\=\s*(["'])?.*?\4i?|[^\]\s]+)\s*\]|:contains\((["'])?.*?\5\)|::?[\w\-]+(?:\([^\u0029]+\))?)\)|:contains\((["'])?(.*?)\6\)|::?([\w\-]+)(?:\((.*?)\))?)/i,


サポートを止める理由は、書かなくてもいいよね。