| Project Home(Google Code) | README | Reference |
| ChangeLog | License | Glossary |


| uuClass.Detect | uu.url | OOP Class |

Detect User-Agent and Functions - ブラウザと機能の判別

Information on a browser and browser functions is offered.
ブラウザの判別や、ブラウザで使用可能な機能について情報を提供します。

PropertyTypeValueDetect
uuClass.Detect.ieBoolean IE base browser is truefalse
uuClass.Detect.ie8Boolean IE >= 8 is truefalse
uuClass.Detect.ie8mode8Boolean IE >= 8 and documentMode >= IE8 is true
IE 8以上で、ドキュメントモードが IE8 以上なら true
false
uuClass.Detect.ie7Boolean IE 7 is truefalse
uuClass.Detect.ie6Boolean IE 6 is truefalse
uuClass.Detect.geckoBoolean Gecko base browser(Firefox, Camino) is truefalse
uuClass.Detect.fx40Boolean Firefox 4.0+ is truefalse
uuClass.Detect.fx31Boolean Firefox 3.1 ~ 3.9 is truefalse
uuClass.Detect.fx30Boolean Firefox 3.0 is truefalse
uuClass.Detect.fx20Boolean Firefox 2.0 is truefalse
uuClass.Detect.webkitBoolean WebKit base browser(Safari, Chrome, Konqueror) is truefalse
uuClass.Detect.safari3Boolean Safari 3+ is truefalse
uuClass.Detect.ipodBoolean iPod or iPhone is truefalse
uuClass.Detect.chromeBoolean Google Chrome is truefalse
uuClass.Detect.operaBoolean Opera base browser(Opera, Wii) is truefalse
uuClass.Detect.opera100Boolean Opera 10+ is truefalse
uuClass.Detect.opera95Boolean Opera 9.5 ~ 9.9 is truefalse
uuClass.Detect.opera90Boolean Opera 9.0 ~ 9.4 is truefalse
uuClass.Detect.wiiBoolean Wii Internet channel(Opera 9.5) is truefalse
uuClass.Detect.airBoolean Adobe AIR is truefalse
uuClass.Detect.stdBoolean Standards-compliant mode is true, Quirks mode is false
標準モードなら true, 互換モードなら false
false
uuClass.Detect.selectorBoolean Selectors API(querySelector and querySelectorAll) support is true
Selectors API(querySelector, querySelectorAll)が使用可能なら true
false
uuClass.Detect.rangeBoolean DOM Level2 Range Module support is true
DOM Level2 Range Module が使用可能なら true
false
uuClass.Detect.etraverseBoolean DOM Element Traversal Module support is true
DOM Element Traversal Module が使用可能なら true
false
uuClass.Detect.disptableBoolean CSS(display: table) support is true
CSS(display: table) が使用可能なら true
false
uuClass.Detect.minquartzNumber
10 or 16
Minimum resolution of setInterval() and setTimeout()(unit: ms)
setInterval(), setTimeout() の最小分解能(単位: ms)
0
uuClass.Detect.baseString Base URL(same directory as uupaa-detect.js or uupaa.js)
Base URL(uupaa-detect.js または uupaa.js が配置されているディレクトリ)
""
uuClass.Detect.versionNumber browser(engine) version or build versionfalse
uuClass.Detect.version examples
BrowseruuClass.Detect.version
Firefox 2.0.0.1420080404
Firefox 3.0.320080924
Safari 3.1525.13
Opera 9.5β9.5
Opera 9.619.61
IE 5.55.5
IE 66
IE 77
IE 88

URL manipulator - URL の操作

URL の取り扱いを簡単にします。


uu.url - parse and build URL - URL の分解と構築

uu.url(url = ".") は絶対 URL または 相対 URL を分解し、 URL の構成要素を格納した Hash を返します。

url に Hash を指定すると、Hash を元に構築した URL を返します。

@param String      [url] - 絶対 URL または相対 URL を指定します。デフォルトは "." です。
       /Hash               Hash も指定できます。
@return Hash/false       - URL 文字列の分解に成功した場合は URL の構成要素を格納した Hash を返します。
        /String            URL の分解に失敗した場合は false を返します。
                           url に Hash が指定された場合は、URL 文字列を返します。
uu.url("http://wwww.example.com:8080/dir/file.ext?key1=value1&key2=value2#menu1"); の戻り値
Hash propertyValueTypeExample
schemeスキームString"http"
domainドメインString"www.example.com"
portポート番号String"8080"
ポート番号が省略されている場合は ""
pathパスString"/dir/file.ext"
パスが省略されている場合は "/"
queryQueryStringString"key1=value1&key2=value2"
QueryStringが省略されている場合は ""
fragmentフラグメントString"menu1"
フラグメントが省略されている場合は ""
url絶対 URLString"http://wwww.example.com:8080/dir/file.ext?key1=value1&key2=value2#menu1"
baseスキーム
+ ドメイン
+ ポート番号
+ ディレクトリ
String"http://wwww.example.com:8080/dir/"
dirディレクトリString"/dir"
ディレクトリが省略されている場合は "/"
fileファイル名[.拡張子]String"file.ext"
ファイル名が省略されている場合は ""
hashuu.url.query(QueryString)の
実行結果
Hash{ key1: "value1", key2: "value2" }
QueryStringが省略されている場合は {}
uu.url(url) で有効なプロパティの一覧
Hash propertyValueTypeExample
schemeスキームString"http"
このプロパティは省略できません。
domainドメインString"www.example.com"
このプロパティは省略できません。
portポート番号String"8080"
ポート番号が不要なら省略するか "" を指定します
pathパスString"/dir/file.ext"
パスが不要なら省略するか "" を指定します
queryQueryStringString"key1=value1&key2=value2"
QueryStringが不要なら省略するか "" を指定します
fragmentフラグメントString"menu1"
フラグメントが不要なら省略するか "" を指定します
以下のプロパティは使用されません(無視されます)
url
base
dir
file
hash
Run
alert(uu.url({
  scheme: 'http',
  domain: 'www.example.com',
  port: 8080,
  path: '/dir/file.ext',
  query: 'key1=value1&key2=value2',
  fragment: 'menu1'
}));

Run uu.url は可逆です

alert(uu.url(uu.url('.')));
uu.url.toAbsURL - to absolute URL - 絶対 URL 化

uu.url.toAbsURL(url = ".") は 相対URL(path)を絶対 URL に変換します。 url が絶対 URL ならそのまま返します。

@param String url - 相対 URL を指定します。絶対 URL も指定可能です。デフォルトは "." です。
                    "." を指定するとカレント URL を絶対 URL に変換します。
@return String    - 絶対 URL を返します。
Run
alert(uu.url.toAbsURL());
uu.url.query - parse and build QueryString - QueryString の分解と構築

uu.url.parseQuery(qstr) は query を分解し Hash( { key: value, ... } )を返します。

query に Hash を指定すると、Hash を元に構築した QueryString を返します。

@param String query - QueryString を指定します。
       /Hash          Hash も指定できます。
@return Hash        - 分解した結果を返します。
        /String       query に Hash を指定した場合は、構築した QueryString を返します。
Run
var query = uu.url.query('key1=value1&key2=value2'); // query = { key1: "value1", key2: "value2" }
alert(uu.url.query(query)); // "key1=value1&key2=value2"

Run 適切にURIエンコードを行います

var query = uu.url.query('#KEY#=日本語'); // query = { "#KEY#": "日本語" }
alert(uu.url.query(query)); // "%23KEY%23=%E6%97%A5%E6%9C%AC%E8%AA%9E" URIエンコード済み

Run uu.url.query は可逆です

alert(uu.url.query(uu.url.query('key=value')));

OOP Class

オブジェクト指向的な"クラス"を JavaScript でも使えるようにします。

Syntax Feature
機能
Role
役割
カプセル化constructordestructormessage pumpsingleton
uuClass() v v - - - シンプルな機能を提供する
uuClass.Generic() v v v v - 汎用的な機能を提供する
uuClass.Singleton() v v v v v データを一元的に管理する機能を提供する

シンプルなクラスには uuClass() を、より複雑なクラスには uuClass.Generic() を使用してください。
グローバル変数やグローバル関数の代わりに uuClass.Singleton() を使うこともできます。


uuClass - create "Keep It Simple, Stupid" class - シンプルなクラスの雛形を生成

uuClass(args, ...) は、シンプルなクラスの雛形を生成します。

@param Mix [...] - constructに渡す引数をいくつでも指定できます。
@return Function - シンプルなクラスの雛形を生成するクロージャを返します。

uuClass は、2つの機能を持ちます。

Run new MyClass(arg1, arg2); は、 construct(arg1, arg2) を呼び出します。

function boot() {
  var MyClass = uuClass();
  MyClass.prototype = {
    construct: function(var1, var2 /*, ... */) {
      // 初期化
      this._var1 = var1;
      this._var2 = var2;
    },
    method: function() {
      return this._var1 * this._var2;
    }
  };
  var my = new MyClass(10, 20); // 自動的に construct() を実行する。
  document.getElementById("log").innerHTML += my.method(); // "200"
}
window.onload = boot;
uuClass.Generic - create generic class - 汎用クラスの雛形を生成

uuClass.Generic(args, ...) は、汎用的なクラスの雛形を生成します。

@param Mix [...] - construct に渡す引数をいくつでも指定できます。
@return Function - 汎用クラスの雛形を生成するクロージャを返します。

uuClass.Generic() は uuClass() に機能を追加したものです。より幅広い用途に利用可能です。

  1. カプセル化し、役割を明確にします。
  2. construct メソッドが定義されている場合は、インスタンス生成時に construct メソッドを自動的に呼び出します。
  3. destruct メソッドが定義されている場合は、ページ遷移時に destruct メソッドを自動的に呼び出します。
  4. 個々のインスタンスを識別するために システム全体を通じてユニーク(唯一)な値を持つ uuid プロパティを自動で追加します(既に存在する場合は追加しません)。
  5. msgbox メソッドが定義されている場合は メッセージポンプに登録し(uuClass.MsgPump.regist)使えるようにします。
uuClass.Singleton - create singleton class - シングルトンクラスの雛形を生成

uuClass.Singleton(args, ...) は、シングルトンクラスの雛形を生成します。

シングルトンパターンを JavaScript で実装したものです。
一つ存在すれば十分なものや、new する度に新しく生成できてしまうとまずいものはシングルトンクラスにします。

@param Mix [...] - construct に渡す引数をいくつでも指定できます。
@return Function - Singleton クラスの雛形を生成するクロージャを返します。

uuClass.Singleton は uuClass.Generic に、機能を追加したものです。

  1. カプセル化し、役割を明確にします。
  2. new 済みのインスタンスがある場合は、新しくインスタンスを生成せずに、既存のインスタンスへの参照を返します。
  3. construct メソッドが定義されている場合は、1度目の new で construct メソッドを呼び出します。
  4. stabled メソッドが定義されている場合は、2度目以降の new で stabled メソッドを呼び出します。
  5. destruct メソッドが定義されている場合は、インスタンス破棄 や ページ遷移時に destruct メソッドを自動的に呼び出します。
  6. 個々のインスタンスを識別するために システム全体を通じてユニーク(唯一)な値を持つ uuid プロパティを自動で追加します(既に存在する場合は追加しません)。
  7. msgbox メソッドが定義されている場合は メッセージポンプに登録し(uuClass.MsgPump.regist)使えるようにします。

Run 何度 new してもシングルトンクラスの実体は一つしか生成されません

var MyClass = uuClass.Singleton();
MyClass.prototype = {
  construct:  function() { log("call construct");  },
  stabled:    function() { log("call stabled");    },
  destruct:   function() { log("call destruct");   },
  method:     function() { log("call method");     }
};
var my = new MyClass();
my.method();

var my2 = new MyClass(); // 二度目のnew
my.method();

log(my === my2); // "true"  myとmy2は同じもの(シングルトン)

window.setTimeout(function() {
  if (window.confirm("jump to http://www.example.com/")) {
    // ページ遷移が発生するため、自動的に destruct() を1度だけ実行する。
    window.location.href = "http://www.example.com/";
  }
}, 1000);