OSDN Git Service

Version 0.6.169, add doc comment.
authoritozyun <itozyun@user.sourceforge.jp>
Wed, 15 Jul 2015 16:42:20 +0000 (01:42 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Wed, 15 Jul 2015 16:42:20 +0000 (01:42 +0900)
35 files changed:
0.6.x/js/01_core/04_XObject.js
0.6.x/js/01_core/05_XArray.js
0.6.x/js/01_core/06_XString.js
0.6.x/js/01_core/08_XURL.js
0.6.x/js/01_core/10_XPair.js
0.6.x/js/01_core/11_Callback.js [moved from 0.6.x/js/01_core/12_XCallback.js with 100% similarity]
0.6.x/js/01_core/12_Closure.js [moved from 0.6.x/js/01_core/11_XClosure.js with 100% similarity]
0.6.x/js/01_core/13_XClass.js
0.6.x/js/01_core/14_XEvent.js
0.6.x/js/01_core/15_XEventDispatcher.js
0.6.x/js/01_core/16_XTimer.js
0.6.x/js/01_core/20_XSystem.js
0.6.x/js/01_core/21_XViewPort.js
0.6.x/js/02_dom/07_XNodeList.js
0.6.x/js/02_dom/10_XNodeAnime.js
0.6.x/js/05_util/00_XUtil.js
0.6.x/js/05_util/01_XNinjaIframe.js
0.6.x/js/05_util/02_XJSON.js
0.6.x/js/05_util/03_XUtilImage.js
0.6.x/js/05_util/04_XXML.js
0.6.x/js/06_net/00_XNet.js
0.6.x/js/06_net/01_XNetXHR.js
0.6.x/js/06_net/02_XNetJSONP.js
0.6.x/js/06_net/03_XNetForm.js
0.6.x/js/06_net/05_XXHRGadget.js
0.6.x/js/06_net/10_XOAuth2.js
0.6.x/js/07_audio/01_XWebAudio.js
0.6.x/js/07_audio/02_XHTMLAudio.js
0.6.x/js/07_audio/03_XSilverlightAudio.js
0.6.x/js/07_audio/10_XAudioSprite.js
0.6.x/js/20_ui/05_XUI_Gesture.js
0.6.x/js/20_ui/06_AbstractUINode.js
0.6.x/js/20_ui/15_ScrollBox.js
0.6.x/js/20_ui/20_PageRoot.js
0.6.x/js/import.js

index 7e42e0c..5791535 100644 (file)
@@ -16,7 +16,7 @@ var X_Object_inObject = X_UA[ 'IE' ] < 5.5 ? // TODO JScript で判定
                };\r
                return false;\r
        }) :\r
-       new Function( 'a,b', 'return a in b' );\r
+       new Function( 'a,b', 'return (""+a) in b' );\r
 \r
 \r
 // ------------------------------------------------------------------------- //\r
@@ -24,7 +24,7 @@ var X_Object_inObject = X_UA[ 'IE' ] < 5.5 ? // TODO JScript で判定
 // ------------------------------------------------------------------------- //\r
 \r
 /**\r
- * Object に関するメソッドを集めたものです。\r
+ * Object に関する関数を集めたものです。\r
  * @namespace X.Object\r
  * @alias X.Object\r
  */\r
@@ -109,7 +109,7 @@ function X_Object_deepCopy( src ){
        return X_Object_deepCopy_( src, [], [], -1 );\r
 };\r
 \r
-function X_Object_deepCopy_( src, objSrc, objCopy, n ) {\r
+function X_Object_deepCopy_( src, objSrc, objCopy, n ){\r
        var ret, i, k;\r
        \r
        if( !src ){ // 0, "", null, undefined, NaN, false\r
index 2bbf616..4154c56 100644 (file)
@@ -1,5 +1,5 @@
 /**\r
- * Array に関するメソッドを集めたものです。\r
+ * Array に関する関数を集めたものです。\r
  * @namespace X.Array\r
  * @alias X.Array\r
  */\r
index 58ec770..828db90 100644 (file)
@@ -9,6 +9,7 @@ var X_String_CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );
 // ------------------------------------------------------------------------- //\r
 \r
 /**\r
+ * 文字列に関する関数を集めたものです。\r
  * @namespace X.String\r
  * @alias X.String\r
  */\r
@@ -32,6 +33,12 @@ X[ 'String' ] = {
 // ------------------------------------------------------------------------- //\r
 // --- implements ---------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
+/**\r
+ * 文字列を数値、NaN,Infinity,-Infinity,bool値、null,undefinedに変換します。1e3等には未対応です。\r
+ * @alias X.String.parse\r
+ * @param {string}\r
+ * @return {*}\r
+ */\r
 function X_String_parse( v ){\r
        var _v, n;\r
        if( X_Type_isString( v ) ){\r
@@ -55,7 +62,14 @@ function X_String_parse( v ){
        };\r
        return v;\r
 };\r
-       \r
+\r
+/**\r
+ * <p>空白文字を半角スペースに変換します。\n\r,\t,\r,\n,\f,\b\r
+ * <p>2つ以上の連続する半角スペースを一つの半角スペースにします。\r
+ * @alias X.String.cleanupWhiteSpace\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
 function X_String_cleanupWhiteSpace( text ){\r
        var _ = ' ', __ = '  ', CRLF = X_String_CRLF;\r
        //text.indexOf( CRLF )   !== -1 && ( text = text.split( CRLF ).join( _ ) );\r
@@ -65,12 +79,23 @@ function X_String_cleanupWhiteSpace( text ){
        text.indexOf( '\n' )   !== -1 && ( text = text.split( '\n' ).join( _ ) );\r
        text.indexOf( '\f' )   !== -1 && ( text = text.split( '\f' ).join( _ ) );\r
        text.indexOf( '\b' )   !== -1 && ( text = text.split( '\b' ).join( _ ) );\r
-       while( text.indexOf( __ ) !== -1 ){\r
-               text = text.split( __ ).join( _ );\r
+       //while( text.indexOf( __ ) !== -1 ){\r
+       //      text = text.split( __ ).join( _ );\r
+       //};\r
+       //return text;\r
+       while( true ){\r
+               text = text.split( __ );\r
+               if( text.length < 2 ) return text.join( _ );\r
+               text = text.join( _ );\r
        };\r
-       return text;\r
 };\r
 \r
+/**\r
+ * 空白文字列を &lt;br&gt; に変換します。タブを &amp;nbsp; 4つに変換します。\r
+ * @alias X.String.whiteSpaceToTag\r
+ * @param {string}\r
+ * @return {string} html文字列\r
+ */\r
 function X_String_whiteSpaceToTag( text ){\r
     if( text == null ) return '';\r
     return text.toString()\r
@@ -85,6 +110,12 @@ function X_String_whiteSpaceToTag( text ){
        .split( '\b' ).join( '' );\r
 };\r
 \r
+/**\r
+ * 一部の文字実体参照をデコードします。&quot;, &amp;, &lt;, &gt;, &nbsp;\r
+ * @alias X.String.chrReferanceTo\r
+ * @param {string}\r
+ * @return {string} html文字列\r
+ */\r
 function X_String_chrReferanceTo( str ){\r
     if( str == null ) return '';\r
     return str.toString()\r
@@ -95,6 +126,12 @@ function X_String_chrReferanceTo( str ){
        .split( '&nbsp;' ).join( ' ' );\r
 };\r
 \r
+/**\r
+ * htmlタグで使われる文字を文字実体参照に変換します。&quot;, &amp;, &lt;, &gt;, &nbsp;\r
+ * @alias X.String.chrReferanceTo\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
 function X_String_toChrReferance( str ){\r
     if( str == null ) return '';\r
     str += '';\r
@@ -106,30 +143,43 @@ function X_String_toChrReferance( str ){
        .split( ' ' ).join( '&nbsp;' );\r
 };\r
 \r
+/**\r
+ * htmlタグで使われる文字を文字実体参照に変換します。&quot;, &amp;, &lt;, &gt;, &nbsp;\r
+ * @alias X.String.isNumberString\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
 function X_String_isNumberString( v ){\r
        var n = v - 0;\r
        return '' + n === v || '' + n === '0' + v;\r
 };\r
 \r
-// https://github.com/jquery/jquery/blob/master/src/serialize.js\r
+/**\r
+ * postdata のために object を文字列に変換します。\r
+ * https://github.com/jquery/jquery/blob/master/src/serialize.js\r
+ * @alias X.String.serialize\r
+ * @param {object}\r
+ * @param {boolean} [traditional=]\r
+ * @return {string}\r
+ */\r
 function X_String_serialize( a, traditional ) {\r
        var prefix,\r
                list = [];\r
 \r
        // If an array was passed in, assume that it is an array of form elements.\r
-       if ( X_Type_isArray( a ) && false ) {\r
+       //if ( X_Type_isArray( a ) && false ) {\r
                // Serialize the form elements\r
                //jQuery.each( a, function() {\r
                //      X_String_serialize_addParam( list, this.name, this.value );\r
                //});\r
 \r
-       } else {\r
+       //} else {\r
                // If traditional, encode the 'old' way (the way 1.3.2 or older\r
                // did it), otherwise encode params recursively.\r
                for ( prefix in a ) {\r
-                       X_String_serialize_buildParams( list, prefix, a[ prefix ], traditional );\r
+                       X_String_serialize_buildParams( list, prefix, a[ prefix ], !!traditional );\r
                }\r
-       }\r
+       //}\r
 \r
        // Return the resulting serialization\r
        return list.join( '&' ).split( '%20' ).join( '+' );\r
@@ -176,9 +226,3 @@ function X_String_serialize_buildParams( list, prefix, obj, traditional ) {
        };\r
 };\r
 \r
-/*\r
- * 信頼できる文字列だけに対して json 文字列のパースを行います\r
- */\r
-function X_String_parseTrustedJsonString( jsonString ){\r
-       return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
-};\r
index a75aaaf..0eaccab 100644 (file)
@@ -15,7 +15,7 @@ var X_URL_BASE_URL = ( function( parts ){
        \r
        X_URL_IS_LOCAL = X_URL_IS_FILE || location.hostname === 'localhost' || location.hostname === '127.0.0.1',\r
        \r
-       X_URL_PARAMS = X_URL_ParamToObj( location.search.slice( 1 ) );\r
+       X_URL_PARAMS = X_URL_paramToObj( location.search.slice( 1 ) );\r
 \r
 // ------------------------------------------------------------------------- //\r
 // --- interface ----------------------------------------------------------- //\r
@@ -26,19 +26,37 @@ var X_URL_BASE_URL = ( function( parts ){
  * @alias X.URL\r
  */\r
 X[ 'URL' ] = {\r
-\r
+       /**\r
+        * ベースurl\r
+        * @alias X.URL.BASE_URL\r
+        * @type {string}\r
+        */\r
        'BASE_URL'       : X_URL_BASE_URL,\r
-       \r
+       /**\r
+        * ファイルプロトコルである。\r
+        * @alias X.URL.IS_FILE\r
+        * @type {boolean}\r
+        */\r
        'IS_FILE'        : X_URL_IS_FILE,\r
-       \r
+       /**\r
+        * ローカルホストである。\r
+        * @alias X.URL.IS_LOCAL\r
+        * @type {boolean}\r
+        */\r
        'IS_LOCAL'       : X_URL_IS_LOCAL,\r
-       \r
+       /**\r
+        * url パラメータを object に格納したもの。\r
+        * @alias X.URL.PARAMS\r
+        * @type {object}\r
+        */\r
        'PARAMS'         : X_URL_PARAMS,\r
-       \r
+\r
        'create'         : X_URL_create,\r
        \r
        'toAbsolutePath' : X_URL_toAbsolutePath,\r
        \r
+       'objToParam'     : X_URL_objToParam,\r
+       \r
        'isSameDomain'   : X_URL_isSameDomain,\r
        \r
        'isSameProtocol' : X_URL_isSameProtocol,\r
@@ -53,10 +71,12 @@ X[ 'URL' ] = {
 // ------------------------------------------------------------------------- //\r
 // --- implements ---------------------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
-/*\r
- * original\r
- * AS3で相対パスを絶対パスに変換する\r
- * http://www.shin-go.net/motionlab/?p=449\r
+/**\r
+ * <p>絶対 url にして返します。\r
+ * <p>original AS3で相対パスを絶対パスに変換する http://www.shin-go.net/motionlab/?p=449\r
+ * @alias X.URL.toAbsolutePath\r
+ * @param {string}\r
+ * @return {string} url\r
  */\r
 function X_URL_toAbsolutePath( path ){\r
        var s  = '/',\r
@@ -81,29 +101,59 @@ function X_URL_toAbsolutePath( path ){
        };\r
        return [ _ary[ 0 ], ss, ary.join( s ), s, path ].join( '' );\r
 };\r
-\r
+/**\r
+ * 同一ドメインか?\r
+ * @alias X.URL.isSameDomain\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
 function X_URL_isSameDomain( path ){\r
        path = X_URL_cleanup( X_URL_toAbsolutePath( path ) );\r
        return path === X_URL_BASE_URL || path.indexOf( X_URL_BASE_URL + '/' ) === 0;\r
 };\r
-\r
+/**\r
+ * 同一プロトコルか?\r
+ * @alias X.URL.isSameProtocol\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
 function X_URL_isSameProtocol( path ){\r
        return X_URL_toAbsolutePath( path ).indexOf( location.protocol ) === 0;\r
 };\r
-\r
+/**\r
+ * ローカルリソースへのアクセスか?\r
+ * @alias X.URL.isLocal\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
 function X_URL_isLocal( path ){\r
        return X_URL_toAbsolutePath( path ).indexOf( 'file:' ) === 0;\r
 };\r
-\r
+/**\r
+ * url パラメータとハッシュフラグメントを削除します。\r
+ * @alias X.URL.cleanup\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
 function X_URL_cleanup( path ){\r
        return path.split( '?' )[ 0 ].split( '#' )[ 0 ];\r
 };\r
-\r
+/**\r
+ * 拡張子を返します。\r
+ * @alias X.URL.getEXT\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
 function X_URL_getEXT( path ){\r
        path = X_URL_cleanup( path ).split( '.' );\r
        return path.length ? path.pop() : '';\r
 };\r
-\r
+/**\r
+ * object を url パラメータにします。値が object の場合、データは失われます。\r
+ * @alias X.URL.objToParam\r
+ * @param {object}\r
+ * @return {string}\r
+ */\r
 function X_URL_objToParam( data ){\r
        var result = [], k, n = -1;\r
        for( k in data ){\r
@@ -114,14 +164,20 @@ function X_URL_objToParam( data ){
        }\r
        return result.join( '' );\r
 };\r
-\r
+/**\r
+ * url にパラメータを加えた url を返します。\r
+ * @alias X.URL.create\r
+ * @param {string}\r
+ * @param {object}\r
+ * @return {string}\r
+ */\r
 function X_URL_create( url, params ){\r
        if( !X_Type_isObject( params ) || !( params = X_URL_objToParam( params ) ) ) return url;\r
        \r
        return url + ( url.indexOf( '?' ) !== -1 ? '&' : '?' ) + params;\r
 };\r
 \r
-function X_URL_ParamToObj( str ){\r
+function X_URL_paramToObj( str ){\r
        var i   = 0,\r
                obj = {},\r
                parts, l, pair, p;\r
index c0c3cd8..df36d92 100644 (file)
@@ -102,3 +102,4 @@ function X_Pair_release( key, opt_pair ){
        };\r
        return false;\r
 };\r
+\r
index ee7174d..45747b1 100644 (file)
@@ -58,7 +58,7 @@ X_Class_CommonMethods =
                        if( listeners && !listeners[ X_LISTENERS_KILL_RESERVED ] && listeners[ X_EVENT_BEFORE_KILL_INSTANCE ] ){\r
                                X_Class_SEAL_KILLING[ X_Class_SEAL_KILLING.length ] = this;\r
                                \r
-                               if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_Callback_PREVENT_DEFAULT ){\r
+                               if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_CALLBACK_PREVENT_DEFAULT ){\r
                                        this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE_CANCELED );\r
                                        // BEFORE_KILL_INSTANCE, KILL_INSTANCE_CANCELED 内で kill() しても PREVENT_DEFAULT の場合はこれを無視する。\r
                                        flag = true;\r
@@ -382,7 +382,7 @@ X[ 'Class' ] = /** @lends X.Class */ {
                        classDef.Constructor = props[ 'Constructor' ];\r
                };\r
 \r
-               klass  = X_Callback_actualClosure( cbHash ); // TODO callbackHash を class定義の置き場所にしてしまう!なるほど…\r
+               klass  = X_Closure_actualClosure( cbHash ); // TODO callbackHash を class定義の置き場所にしてしまう!なるほど…\r
                cbHash.klass = klass;\r
                klass[ 'superClassOf' ] = X_Class_superClassOf;\r
                klass[ 'subClassOf' ]   = X_Class_subClassOf;\r
@@ -498,11 +498,10 @@ function X_Class_subClassOf( klass ){
  * @example var SubClass = SuperClass.inherits( 'Sub', X_Class.FINAL, { ... } );\r
  * @param {string} [displayName] クラスの名前\r
  * @param {number} [classSetting=0] X_Class.POOL_OBJECT | X_Class.FINAL など\r
- * @param {__ClassBase__=} [privateClass] このクラスとペアで動作するシャドウクラス\r
  * @param {object} [props={}] このクラスのメンバと関数。コンストラクタは Constructor と書くこと\r
  * @return {__ClassBase__}\r
  */\r
-function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props */ ){\r
+function X_Class_inherits( /* displayName, classSetting, props */ ){\r
        var args        = X_Array_copy( arguments ),\r
                params      = [],\r
                Super       = this,\r
index 522959b..e54199b 100644 (file)
@@ -13,7 +13,7 @@ var X_Event_Rename    = {},
                                var raw = this[ '_rawObject' ];\r
                                \r
                                return raw.readyState === 'complete' || raw.readyState === 'loaded' ?\r
-                                               this[ 'dispatch' ]( 'load' ) : X_Callback_PREVENT_DEFAULT, X_Callback_STOP_PROPAGATION;\r
+                                               this[ 'dispatch' ]( 'load' ) : X_CALLBACK_PREVENT_DEFAULT, X_CALLBACK_STOP_PROPAGATION;\r
                        },\r
                \r
                // X_UA[ 'Opera' ]\r
@@ -22,7 +22,7 @@ var X_Event_Rename    = {},
                },\r
                \r
                        contextmenu_proxy : function( e ){\r
-                               return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_Callback_NONE;\r
+                               return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_CALLBACK_NONE;\r
                        }\r
        },\r
        \r
@@ -54,7 +54,6 @@ var // 内部イベント
        X_EVENT_INIT                   =  7,\r
 \r
        // 公開イベント\r
-       /* @const */\r
        X_EVENT_XDOM_READY             =  8,\r
        \r
        X_EVENT_COMPLETE               =  9,\r
@@ -66,11 +65,8 @@ var // 内部イベント
        X_EVENT_CANCELED               = 15,\r
        X_EVENT_TIMEOUT                = 16,\r
 \r
-       /* @const */\r
        X_EVENT_BEFORE_KILL_INSTANCE   = 17,\r
-       /* @const */\r
        X_EVENT_KILL_INSTANCE_CANCELED = 18,\r
-       /* @const */\r
        X_EVENT_KILL_INSTANCE          = 19,\r
        \r
        X_EVENT_VIEW_ACTIVATE          = 20,\r
@@ -116,13 +112,16 @@ var // 内部イベント
        \r
        X_Event_last                   = 49;\r
 \r
+// in_page_jump\r
+// on_screen_keyboard_show\r
+// on_screen_keyboard_hide\r
+\r
 /**\r
  * フレームワーク内で定義されたイベント。\r
  * @namespace X.Event\r
- * @alias X.Event\r
- * @enum {number}\r
  */\r
-X[ 'Event' ] = {\r
+X[ 'Event' ] = /** @lends X.Event */\r
+{\r
        /**\r
         * X.ViewPort で発生する。DomContentLoaded に相当。document.body.innerHTML の内容から X.Node ツリーの作成が完了した。\r
         * このイベント以降、X.Doc.create(), X.Doc.find() 等が可能になる。\r
@@ -172,10 +171,6 @@ X[ 'Event' ] = {
         */\r
        'BASE_FONT_RESIZED'      : X_EVENT_BASE_FONT_RESIZED,\r
 \r
-// in_page_jump\r
-// on_screen_keyboard_show\r
-// on_screen_keyboard_hide\r
-\r
        /**\r
         * X_System で発生する。このイベントで要素のサイズを取得すると無限ループに!\r
         */\r
index aceaca5..5a5b17d 100644 (file)
  */\r
 var X_Listeners_;\r
 \r
-var /** @const */\r
-       X_LISTENERS_ACTUAL_HANDLER = 0,\r
-       /** @const */\r
+var X_LISTENERS_ACTUAL_HANDLER = 0,\r
        X_LISTENERS_DISPATCHING    = 1,\r
-       /** @const */\r
        X_LISTENERS_RESERVES       = 2,\r
-       /** @const */\r
        X_LISTENERS_UNLISTENS      = 3,\r
-       /** @const */\r
        X_LISTENERS_KILL_RESERVED  = 4; // X.Event で、イベントIDを 5 から始めているので注意。\r
 \r
 \r
@@ -185,7 +180,7 @@ var X_EventDispatcher = X[ 'EventDispatcher' ] =
                                if( opt_arg1.kind ){\r
                                        cbHash = opt_arg1;\r
                                } else {\r
-                                       cbHash = X_Callback_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
+                                       cbHash = X_Closure_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
                                };\r
                                \r
                                if( ( unlistens = listeners[ X_LISTENERS_UNLISTENS ] ) && ( unlistens = unlistens[ opt_type ] ) ){\r
@@ -242,11 +237,11 @@ var X_EventDispatcher = X[ 'EventDispatcher' ] =
  */\r
 function X_EventDispatcher_dispatch( e ){\r
        var listeners = this[ '_listeners' ],\r
-               ret       = X_Callback_NONE,\r
+               ret       = X_CALLBACK_NONE,\r
                type      = e[ 'type' ],\r
                list, unlistens, i, l, args, f, r, sysOnly, timerID, k;\r
        \r
-       if( !listeners || !( list = listeners[ type || e ] ) ) return X_Callback_NONE;\r
+       if( !listeners || !( list = listeners[ type || e ] ) ) return X_CALLBACK_NONE;\r
        \r
        // 数値, 文字が渡された場合\r
        if( !type ){\r
@@ -273,9 +268,9 @@ function X_EventDispatcher_dispatch( e ){
                };\r
                if( unlistens && unlistens.indexOf( f ) !== -1 ) continue;\r
                \r
-               r = X_Callback_proxyCallback( f, args || ( args = [ e ] ) ) || 0;\r
+               r = X_Closure_proxyCallback( f, args || ( args = [ e ] ) ) || 0;\r
                \r
-               if( f.once || r & X_Callback_UN_LISTEN ){\r
+               if( f.once || r & X_CALLBACK_UN_LISTEN ){\r
                        // dispatch 中に unlisten が作られることがある\r
                        if( !unlistens ){\r
                                unlistens = listeners[ X_LISTENERS_UNLISTENS ] || ( listeners[ X_LISTENERS_UNLISTENS ] = {} );\r
@@ -285,7 +280,7 @@ function X_EventDispatcher_dispatch( e ){
                };\r
                ret |= X_Type_isFinite( r ) ? r : 0;\r
                \r
-               if( ( r & X_Callback_STOP_NOW ) === X_Callback_STOP_NOW ){ // iOS では ( & ) 括弧が無いと判定を誤る\r
+               if( ( r & X_CALLBACK_STOP_NOW ) === X_CALLBACK_STOP_NOW ){ // iOS では ( & ) 括弧が無いと判定を誤る\r
                        sysOnly = true;\r
                        break;\r
                };\r
@@ -400,7 +395,7 @@ function X_EventDispatcher_listen( type, opt_arg1, opt_arg2, opt_arg3 ){
        \r
        add && X_EventDispatcher_actualAddEvent( this, type, raw, list );\r
        \r
-       f = X_Callback_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
+       f = X_Closure_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
        list[ list.length ] = f;\r
        f.once = X_EventDispatcher_once;\r
        f.lock = X_EventDispatcher_lock;\r
@@ -535,14 +530,14 @@ function X_EventDispatcher_actualAddEvent( that, type, raw, list ){
                if( X_UA_EVENT.W3C ){\r
                        switch( that[ '_rawType' ] ){\r
                                case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
-                                       list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                                       list.slcallback = X_Closure_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
                                        list.sltoken    = raw[ 'AddEventListener' ]( type, list.slcallback );\r
                                        break;\r
                                \r
                                case X_EventDispatcher_EVENT_TARGET_XHR :\r
                                        if( X_UA[ 'Opera' ] < 12 ){\r
                                                // Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない\r
-                                               raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+                                               raw[ 'on' + type ] = X_Closure_create( that, X_EventDispatcher_dispatch, [ type ] );\r
                                                break;\r
                                        };\r
 \r
@@ -556,7 +551,7 @@ function X_EventDispatcher_actualAddEvent( that, type, raw, list ){
                                                  type === 'animationiteration'  || type === 'webkitAnimationIteration' ) ){\r
                                                raw.addEventListener( type, X_EventDispatcher_iOSTransitionEndDispatch, false );\r
                                        } else {\r
-                                               f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
+                                               f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Closure_create( that, X_EventDispatcher_actualHandleEvent ) );\r
                \r
                                                if( raw.addEventListener ){\r
                                                        raw.addEventListener( type, f, false );\r
@@ -570,18 +565,18 @@ function X_EventDispatcher_actualAddEvent( that, type, raw, list ){
                if( X_UA_EVENT.IE ){\r
                        switch( that[ '_rawType' ] ){   \r
                                case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
-                                       list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                                       list.slcallback = X_Closure_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
                                        list.sltoken    = raw[ 'AddEventListener' ]( type, list.slcallback );\r
                                        break;                          \r
                                \r
                                case X_EventDispatcher_EVENT_TARGET_XHR :\r
                                        console.log( 'XHR addEvent ' + type );\r
                                        // ie8- の XHR は window.event が更新されないため, eventType 毎に callback を指定する\r
-                                       raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+                                       raw[ 'on' + type ] = X_Closure_create( that, X_EventDispatcher_dispatch, [ type ] );\r
                                        break;\r
                                \r
                                default :\r
-                                       f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
+                                       f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Closure_create( that, X_EventDispatcher_actualHandleEvent ) );\r
                                        \r
                                        if( raw.attachEvent ){\r
                                                raw.attachEvent( 'on' + type, f );\r
@@ -594,17 +589,17 @@ function X_EventDispatcher_actualAddEvent( that, type, raw, list ){
                        switch( that[ '_rawType' ] ){\r
                                case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
                                        // DOM0 で Silverlight ってあるの -> ie4 mobile?\r
-                                       list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+                                       list.slcallback = X_Closure_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
                                        list.sltoken    = raw[ 'AddEventListener' ]( type, list.slcallback );\r
                                        break;                          \r
                                \r
                                case X_EventDispatcher_EVENT_TARGET_XHR :\r
                                        // ie4 mobile は XHR をサポート!\r
-                                       raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+                                       raw[ 'on' + type ] = X_Closure_create( that, X_EventDispatcher_dispatch, [ type ] );\r
                                        break;\r
 \r
                                default :\r
-                                       raw[ 'on' + type ] = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
+                                       raw[ 'on' + type ] = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Closure_create( that, X_EventDispatcher_actualHandleEvent ) );\r
                                        break;\r
                        };\r
                }\r
@@ -614,7 +609,7 @@ function X_EventDispatcher_actualAddEvent( that, type, raw, list ){
 \r
 /*\r
  * iOS の webkitTransitionEnd が連続して起こる場合、\r
- * コールバックの(that[ X_LISTENERS_ACTUAL_HANDLER ])クロージャ内の実際のコールバック(X_Callback_actualClosure:obj._)が\r
+ * コールバックの(that[ X_LISTENERS_ACTUAL_HANDLER ])クロージャ内の実際のコールバック(X_Closure_actualClosure:obj._)が\r
  * 参照できていない問題に遭遇、、、iOS3.1.3 & iOS6.1.5 で確認\r
  * animation も怪しい、、、\r
  */\r
@@ -643,7 +638,7 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                        switch( that[ '_rawType' ] ){\r
                                case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
                                        raw[ 'RemoveEventListener' ]( type, list.sltoken ); // token\r
-                                       X_Callback_correct( list.slcallback );\r
+                                       X_Closure_correct( list.slcallback );\r
                                        delete list.sltoken;\r
                                        delete list.slcallback;\r
                                        break;\r
@@ -651,7 +646,7 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                                case X_EventDispatcher_EVENT_TARGET_XHR :\r
                                        if( X_UA[ 'Opera' ] < 12 ){\r
                                                // Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない\r
-                                               X_Callback_correct( raw[ 'on' + type ] );\r
+                                               X_Closure_correct( raw[ 'on' + type ] );\r
                                                raw[ 'on' + type ] = '';\r
                                                break;\r
                                        };\r
@@ -671,7 +666,7 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                                        };\r
                                        \r
                                        if( !skip && that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] ){\r
-                                               X_Callback_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
+                                               X_Closure_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
                                                delete that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ];\r
                                        };\r
                        };\r
@@ -680,13 +675,13 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                        switch( that[ '_rawType' ] ){\r
                                case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
                                        raw[ 'RemoveEventListener' ]( type, list.sltoken ); // token\r
-                                       X_Callback_correct( list.slcallback );\r
+                                       X_Closure_correct( list.slcallback );\r
                                        delete list.sltoken;\r
                                        delete list.slcallback;\r
                                        break;\r
                                \r
                                case X_EventDispatcher_EVENT_TARGET_XHR :\r
-                                       X_Callback_correct( raw[ 'on' + type ] );\r
+                                       X_Closure_correct( raw[ 'on' + type ] );\r
                                        raw[ 'on' + type ] = X_emptyFunction;\r
                                        raw[ 'on' + type ] = '';\r
                                        console.log( 'XHR rmEvent ' + type );\r
@@ -702,7 +697,7 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                                        };\r
                                        \r
                                        if( !skip ){\r
-                                               X_Callback_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
+                                               X_Closure_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
                                                delete that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ];\r
                                        };\r
                        };\r
@@ -710,13 +705,13 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                        switch( that[ '_rawType' ] ){\r
                                case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
                                        raw[ 'RemoveEventListener' ]( type, list.sltoken ); // token\r
-                                       X_Callback_correct( list.slcallback );\r
+                                       X_Closure_correct( list.slcallback );\r
                                        delete list.sltoken;\r
                                        delete list.slcallback;\r
                                        break;\r
                                \r
                                case X_EventDispatcher_EVENT_TARGET_XHR :\r
-                                       X_Callback_correct( raw[ 'on' + type ] );\r
+                                       X_Closure_correct( raw[ 'on' + type ] );\r
                                        raw[ 'on' + type ] = X_emptyFunction;\r
                                        raw[ 'on' + type ] = '';\r
                                        break;\r
@@ -726,7 +721,7 @@ function X_EventDispatcher_actualRemoveEvent( that, type, raw, list, skip ){
                                        raw[ 'on' + type ] = '';\r
                                        \r
                                        if( !skip ){\r
-                                               X_Callback_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
+                                               X_Closure_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
                                                delete that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ];\r
                                        };\r
                        };\r
@@ -747,10 +742,10 @@ var X_EventDispatcher_actualHandleEvent =
                        \r
                        ret = this[ 'dispatch' ]( new X_DomEvent( e, this, this[ '_rawObject' ] ) );\r
 \r
-                       if( ret & X_Callback_STOP_PROPAGATION ){\r
+                       if( ret & X_CALLBACK_STOP_PROPAGATION ){\r
                                e.cancelBubble = true;\r
                        };\r
-                       if( ret & X_Callback_PREVENT_DEFAULT ){\r
+                       if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
                                this[ '_tag' ] === 'A' && this[ '_rawObject' ].blur();\r
                                return e.returnValue = false;\r
                        };\r
@@ -758,14 +753,14 @@ var X_EventDispatcher_actualHandleEvent =
        //X_UA_EVENT.W3C || X_UA_EVENT.DOM0\r
                (function( e ){\r
                        var ev  = new X_DomEvent( e, this ),\r
-                               ret = X_Callback_NONE,\r
+                               ret = X_CALLBACK_NONE,\r
                                i, l;\r
                        //console.log( '>>>>>>>>>> ' + e.type );\r
                        // touch event -> pointer\r
                        if( X_Type_isArray( ev ) ){\r
                                if( ev.length === 0 ){\r
                                        // TouchEvent の後に発生した MouseEvent のキャンセル\r
-                                       ret = X_Callback_STOP_PROPAGATION | X_Callback_PREVENT_DEFAULT;\r
+                                       ret = X_CALLBACK_STOP_PROPAGATION | X_CALLBACK_PREVENT_DEFAULT;\r
                                } else {\r
                                        for( i = 0, l = ev.length; i < l; ++i ){\r
                                                //console.log( 'handleEvent ' + ev[ i ].type );\r
@@ -776,10 +771,10 @@ var X_EventDispatcher_actualHandleEvent =
                                ret = this[ 'dispatch' ]( ev );\r
                        };\r
                        \r
-                       if( ret & X_Callback_STOP_PROPAGATION ){\r
+                       if( ret & X_CALLBACK_STOP_PROPAGATION ){\r
                                e.stopPropagation();\r
                        };\r
-                       if( ret & X_Callback_PREVENT_DEFAULT ){\r
+                       if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
                                this[ '_tag' ] === 'A' && this[ '_rawObject' ].blur();\r
                                e.preventDefault();\r
                                if( X_UA[ 'WebKit' ] < 525.13 ){ // Safari3-\r
index de15c13..4df6372 100644 (file)
@@ -95,7 +95,7 @@ var
                        var i = X_Timer_REQ_FRAME_LIST.length,\r
                                f;\r
                        i === 0 && ( X_Timer_requestID = X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) );\r
-                       f = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       f = X_Closure_classifyCallbackArgs( args1, args2, args3 );\r
                        if( !f.kind ) f = { func : f };\r
                        X_Timer_REQ_FRAME_LIST[ i ] = f;\r
                        return f.uid = ++X_Timer_uid;\r
@@ -104,7 +104,7 @@ var
                        var i = X_Timer_REQ_FRAME_LIST.length,\r
                                f;\r
                        i === 0 && ( X_Timer_requestID = X_Timer_add( 0, 1, X_Timer_onEnterFrame ) );\r
-                       f = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+                       f = X_Closure_classifyCallbackArgs( args1, args2, args3 );\r
                        if( !f.kind ) f = { func : f };\r
                        X_Timer_REQ_FRAME_LIST[ i ] = f;\r
                        return f.uid = ++X_Timer_uid;\r
@@ -224,7 +224,7 @@ X[ 'Timer' ] = {
                        opt_count = 0;\r
                };\r
                \r
-               hash = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+               hash = X_Closure_classifyCallbackArgs( args1, args2, args3 );\r
                if( !hash ) return -1; // dev only\r
                \r
                if( !hash.kind ) hash = { func : hash };\r
@@ -325,7 +325,7 @@ function X_Timer_onTimeout(){
                X_Timer_currentUID = q.uid;\r
                \r
                if( q.kind ){\r
-                       r = X_Callback_proxyCallback( q, [] );\r
+                       r = X_Closure_proxyCallback( q, [] );\r
                } else {\r
                        r = q.func();\r
                };\r
@@ -338,7 +338,7 @@ function X_Timer_onTimeout(){
                        heavy = true;\r
                };\r
                \r
-               if( r & X_Callback_UN_LISTEN || c === 1 ){\r
+               if( r & X_CALLBACK_UN_LISTEN || c === 1 ){\r
                        list.splice( i, 1 );\r
                        --i;\r
                        --l;\r
@@ -427,7 +427,7 @@ function X_Timer_onEnterFrame( time ){
        if( X_Timer_removal && X_Timer_removal[ q.uid ] ) continue;\r
        \r
                if( q.kind ){\r
-                       X_Callback_proxyCallback( q, args || ( args = [ time ] ) );\r
+                       X_Closure_proxyCallback( q, args || ( args = [ time ] ) );\r
                } else {\r
                        q.func( time );\r
                };\r
index 3b0e9df..3289140 100644 (file)
@@ -41,7 +41,7 @@ var
                                                };\r
                                                console.log( e.origin + ' ' + X.URL.BASE_URL );\r
                                                \r
-                                               return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+                                               return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
                                };\r
                        }\r
                }\r
index 2fe61fa..b4f53b8 100644 (file)
@@ -41,7 +41,7 @@ X_ViewPort = X_Class_override(
                                case 'beforeunload' :
                                        // ie では a href='javascript' な要素でも beforeunload が起こる
                                        href = e.target && e.target[ 'attr' ] && e.target[ 'attr' ]( 'href' );
-                                       if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;
+                                       if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;
                                        
                                        return X_ViewPort[ 'dispatch' ]( X_EVENT_BEFORE_UNLOAD );
                                        
@@ -101,7 +101,10 @@ function X_ViewPort_changeFocus(){
  * @alias X.ViewPort
  */
 X[ 'ViewPort' ] = {
-       
+       /**
+        * 
+        * @alias X.ViewPort.listen
+        */
        'listen' : function( type, arg1, arg2, arg3 ){
                if( type <= X_ViewPort_readyState ){
                        /*
@@ -114,7 +117,10 @@ X[ 'ViewPort' ] = {
                return X[ 'ViewPort' ];
        },
        
-       
+       /**
+        * 
+        * @alias X.ViewPort.listenOnce
+        */
        'listenOnce' : function( type, arg1, arg2, arg3 ){
                if( type <= X_ViewPort_readyState ){
                        /*
@@ -126,16 +132,27 @@ X[ 'ViewPort' ] = {
                return X[ 'ViewPort' ];
        },
        
+       /**
+        * 
+        * @alias X.ViewPort.unlisten
+        */
        'unlisten' : function( type, arg1, arg2, arg3 ){
                type && arg1 && X_ViewPort[ 'unlisten' ]( type, arg1, arg2, arg3 );
                return X[ 'ViewPort' ];
        },
        
+       /**
+        * 
+        * @alias X.ViewPort.listening
+        */
        'listening' : function( type, arg1, arg2, arg3 ){
                return X_ViewPort[ 'listening' ]( type, arg1, arg2, arg3 );
        },
-       
-       // hammer のテストファイルだけが使用
+
+       /**
+        * hammer のテストファイルだけが使用
+        * @alias X.ViewPort.asyncDispatch
+        */
        'asyncDispatch' : function(){
                return X_ViewPort[ 'asyncDispatch' ].apply( X_ViewPort, arguments );
        },
@@ -151,6 +168,10 @@ X[ 'ViewPort' ] = {
                
        },
        
+       /**
+        * 
+        * @alias X.ViewPort.getSize
+        */
        'getSize' : function(){
                return [ X_ViewPort_width, X_ViewPort_height ];
        },
@@ -159,6 +180,10 @@ X[ 'ViewPort' ] = {
 //(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollLeft == 'number' ? t : document.body).ScrollLeft;
 //(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollTop == 'number' ? t : document.body).ScrollTop
        
+       /**
+        * 
+        * @alias X.ViewPort.getDocumentSize
+        */
        'getDocumentSize' : function(){
                // Opera は互換モードでは document.body.scrollHeight、標準モードでは document.documentElement.scrollHeight でページの高さが取れる。と思ってたんだけど、例外があった。
                // http://orera.g.hatena.ne.jp/edvakf/20100515/1273908051
@@ -177,6 +202,10 @@ X[ 'ViewPort' ] = {
                ];
        },
        
+       /**
+        * 
+        * @alias X.ViewPort.getScrollPosition
+        */
        'getScrollPosition' :
                window.pageXOffset !== undefined ?
                        ( function(){
@@ -194,10 +223,18 @@ X[ 'ViewPort' ] = {
                                return[ X_ViewPort_scrollX = X_ViewPort_rootElement.scrollLeft || document.body.scrollLeft, X_ViewPort_scrollY = X_ViewPort_rootElement.scrollTop || document.body.scrollTop ];
                        } ),
 
+       /**
+        * 
+        * @alias X.ViewPort.getScrollbarSize
+        */
        'getScrollbarSize' : function(){
                return [ X_ViewPort_vScrollbarSize, X_ViewPort_hScrollbarSize ];        
        },
        
+       /**
+        * 
+        * @alias X.ViewPort.getBaseFontSize
+        */
        'getBaseFontSize' : function(){
                if( X_Node_updateTimerID ){
                        X_Node_startUpdate();
@@ -261,7 +298,7 @@ X[ 'ViewPort' ] = {
                                        console.log( '-- resize : ' + X_Timer_now() );
                                        
                                        !X_ViewPort_lock && ( X_ViewPort_lock = true ) && X_Timer_once( 100, X_ViewPort_detectFinishResizing );
-                                       return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;
+                                       return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;
                                });
                
                function X_ViewPort_detectFinishResizing(){
@@ -287,7 +324,7 @@ X[ 'ViewPort' ] = {
                        
                        console.log( '> X_TEMP.onDomContentLoaded rs:' + X_ViewPort_readyState );
                        
-                       if( X_EVENT_PRE_INIT <= X_ViewPort_readyState ) return X_Callback_UN_LISTEN;
+                       if( X_EVENT_PRE_INIT <= X_ViewPort_readyState ) return X_CALLBACK_UN_LISTEN;
                        X_ViewPort_readyState = X_EVENT_PRE_INIT;
                        
                        // DOMContentLoaded の無いブラウザで X_TEMP.onDomContentLoaded への参照が残り続けるのを回避
@@ -430,7 +467,7 @@ X[ 'ViewPort' ] = {
                                X_EventDispatcher_systemListen( X_ViewPort, [ 'focus', 'blur' ] );
                        };
 
-                       return X_Callback_UN_LISTEN;
+                       return X_CALLBACK_UN_LISTEN;
                };
 
                function X_ViewPort_getWindowSize(){
@@ -481,7 +518,7 @@ if( 6 <= X_UA[ 'IE' ] && X[ 'inHead' ] ){
 // http://lists.apple.com/archives/web-dev/2003/Oct/msg00036.html
 if( X_UA[ 'WebKit' ] || X_UA[ 'Safari' ]  < 3 ){ // sniff
        X_Timer_add( 16, function(){
-               if( !X_TEMP.onDomContentLoaded ) return X_Callback_UN_LISTEN;
+               if( !X_TEMP.onDomContentLoaded ) return X_CALLBACK_UN_LISTEN;
                if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X_TEMP.onDomContentLoaded();
        });
 };
index 443677c..be45a3b 100644 (file)
@@ -23,7 +23,7 @@ function X_NodeList( v ){
                };\r
                if( !skip ){\r
                        this[ n ] = xnode;\r
-                       n = ++this.length;      \r
+                       n = ++this.length;\r
                };\r
        };\r
 };\r
index 04709bf..003b89c 100644 (file)
@@ -446,7 +446,7 @@ function X_Node_Anime_onTransitionEnd( e ){
        if( !this[ '_anime' ] || this[ '_anime' ].phase !== 2 ){\r
                // ここで return してしまうと、view の更新イベント待ちの場合、アニメが止まる\r
                X_Node_Anime_reserved && !X_Node_Anime_updateTimerID && !X_Node_updateTimerID && X_Node_Anime_reserveUpdate( X_Node_Anime_reserved = false );\r
-               return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+               return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
        };\r
        \r
        this[ '_anime' ].phase = 3;\r
@@ -462,7 +462,7 @@ function X_Node_Anime_onTransitionEnd( e ){
        // win+Gecko は不可\r
        X_Node_Anime_updateAnimations( 0, X_Node_updateOnTransitionEnd );\r
        \r
-       return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+       return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
 };\r
 \r
 function X_Node_Anime_releaseGPULayer(){\r
index 7a70e86..68c1a20 100644 (file)
@@ -1 +1,5 @@
+/**\r
+ * ユーティリティ関数とユーティリティクラス\r
+ * @namespace X.Util\r
+ */\r
 X[ 'Util' ] = {};\r
index 08f7d21..9964d58 100644 (file)
@@ -1,13 +1,17 @@
-/*\r
+/**\r
  * http://msdn.microsoft.com/ja-jp/library/ie/hh180174%28v=vs.85%29.aspx\r
  * 孤立するとウィンドウ オブジェクトのプロパティが消去される\r
  * \r
  * http://qiita.com/sou/items/3380d4fa9b08b27bb387\r
  * モバイルブラウザでの iframe の挙動(Mobile Safari, Chrome for Android)\r
+ * \r
+ * @alias X.Util.NinjaIframe\r
+ * @class 隠し iframe 機能を提供します。\r
+ * @constructor \r
+ * @constructs NinjaIframe\r
+ * @extends {Node}\r
  */\r
-\r
-// TODO Node.inherits\r
-X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](\r
+var X_NinjaIframe = X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](\r
        'NinjaIframe',\r
        {\r
                autoRefresh  : 0,\r
@@ -132,7 +136,7 @@ function X_Util_NinjaIframe_handleEvent( e ){
                        break;\r
        };\r
        \r
-       return X_Callback_STOP_PROPAGATION;\r
+       return X_CALLBACK_STOP_PROPAGATION;\r
 };\r
 \r
 function X_Util_NinjaIframe_writeToIframe( that ){\r
index 2046288..a99aa0e 100644 (file)
@@ -1,5 +1,7 @@
-\r
-\r
+/**\r
+ * ユーティリティ関数とユーティリティクラス\r
+ * @namespace X.JSON\r
+ */\r
 var X_JSON = X[ 'JSON' ] =\r
 \r
 // TODO ie8 は子フレームには JSON がいない…アクセス可能な親を探索\r
@@ -18,14 +20,18 @@ X_UA[ 'IE8' ] ? {
        'parse' : JSON.parse\r
 } :\r
 \r
-window.JSON || {\r
+window.JSON ||\r
+{\r
        'stringify' : X_JSON_stringify,\r
        \r
-       'parse'     : X_String_parseTrustedJsonString\r
+       'parse'     : X_JSON_parseTrustableString\r
 };\r
 \r
 \r
-\r
+/**\r
+ * \r
+ * @alias X.JSON.stringify\r
+ */\r
 function X_JSON_stringify( obj ){\r
        var json = '', k, v;\r
        for( k in obj ){\r
@@ -36,4 +42,14 @@ function X_JSON_stringify( obj ){
        };\r
        //console.log( json );\r
        return '{' + json + '}';\r
-};
\ No newline at end of file
+};\r
+\r
+/**\r
+ * <p>JSON を持たないブラウザでは、eval を使用します。よって、信頼できる文字列だけに対してパースを行います。\r
+ * <p>url パラメータや window.name に対して使用する際は最新の注意を払います。\r
+ * @alias X.JSON.parse\r
+ */\r
+function X_JSON_parseTrustableString( jsonString ){\r
+       return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
+};\r
+\r
index 958a0e7..3047cae 100644 (file)
@@ -1,6 +1,10 @@
 \r
 var X_Util_Image_actualSize = {};\r
 \r
+/**\r
+ * ユーティリティ関数とユーティリティクラス\r
+ * @namespace X.Util.Image\r
+ */\r
 X[ 'Util' ][ 'Image' ] = {     \r
        'getActualDimension' : X_Util_Image_getActualDimension\r
        \r
@@ -11,10 +15,14 @@ X[ 'Util' ][ 'Image' ] = {
  * Opacity不可 NetFront3.4\r
  */\r
 \r
-/*\r
- * original\r
- * LICENSE: MIT\r
- * AUTHOR: uupaa.js@gmail.com\r
+/**\r
+ * <p>画像の実際のサイズを返します。\r
+ * <p>original\r
+ * <p> LICENSE: MIT\r
+ * <p> AUTHOR: uupaa.js@gmail.com\r
+ * @alias X.Util.Image.getActualDimension\r
+ * @param {Node|ImageElement|string}\r
+ * @return {array.<number>}\r
  */\r
 function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){\r
        var xnode, img, remove, ret, run, memW, memH, w, h;\r
index 18a71f2..6ef1908 100644 (file)
 \r
 X[ 'XML' ] = XMLWrapper;\r
 \r
+/**\r
+ * XML 探索用のラッパークラスです\r
+ * @alias X.XML\r
+ * @class XML 探索用のラッパークラスです\r
+ * @constructor\r
+ * @param {xml}\r
+ */\r
 function XMLWrapper( xml ){\r
        this._rawXML = xml;\r
 };\r
@@ -36,7 +43,7 @@ function XMLWrapper_get( index ){
 };\r
 \r
 function XMLWrapper_val( queryString, type ){\r
-       var attr_textContent = X.UA.IE < 9 || X.UA.Opera ? 'innerText' : X.UA.IE9 ? 'text' : 'textContent',\r
+       var attr_textContent = X_UA[ 'IE' ] < 9 || X_UA[ 'Opera' ] ? 'innerText' : X_UA[ 'IE9' ] ? 'text' : 'textContent',\r
                wrapper, xml, v;\r
        \r
        switch( queryString ){\r
index 2dc4432..d69d68a 100644 (file)
@@ -328,7 +328,7 @@ function X_NET_shiftQueue(){
                                        case 0 :\r
                                        case 1 :\r
                                        case 2 :\r
-                                               if( !( auth[ 'dispatch' ]( X_EVENT_NEED_AUTH ) & X_Callback_PREVENT_DEFAULT ) ){\r
+                                               if( !( auth[ 'dispatch' ]( X_EVENT_NEED_AUTH ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
                                                        authSettings.lazyRequests = authSettings.lazyRequests || [];\r
                                                        authSettings.lazyRequests.indexOf( X_NET_currentQueue ) === -1 && authSettings.lazyRequests.push( X_NET_currentQueue );\r
                                                };\r
index f5db50f..0531a29 100644 (file)
@@ -31,6 +31,7 @@ http://d.hatena.ne.jp/sshi/20060904/p1
 itozyun 2014-10-30 20:55:41\r
 basic 認証のかかったhtml を表示して、そのjsが xhr をすると Android1.6 では 401 error が返る。Android 2.3 では解決している。\r
 Android1.6- の XHR で 401 エラーが返った場合は、iframe に xml を表示させてその内容を取ればサーバ側の対応無しでいけるかも?\r
+Android2 にも xdomain な GET が一回しかできない問題 gears 使えない?\r
 \r
 IE9 で 画像バイナリの取得 VBA をかましている\r
 http://web.archive.org/web/20130808105151/http://gurimmer.lolipop.jp/daihakken/2012/05/22/javascriptajaxxmlhttprequest%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Fajax%E3%81%AE%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89\r
@@ -255,7 +256,8 @@ X_TEMP.X_Net_XHR_params = {
                                                headers[ 'Pragma' ] = 'no-cache';\r
                                                headers[ 'Cache-Control' ] = 'no-cache';\r
                                                headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT';\r
-                                       } */                                    \r
+                                       } */\r
+               \r
                                        // http://nakigao.sitemix.jp/blog/?p=2040\r
                                        // json 取得時に SafariでHTTP/412のエラー。但し相手が audio の場合この指定があるとロードに失敗する。 iOS8.2, iOS7.1 では遭遇せず\r
                                        if( this._dataType === 'json' ){\r
@@ -454,7 +456,7 @@ X_TEMP.X_Net_XHR_params = {
                                                                        // eval() を使っているけど JSON の無いブラウザは XDomain な XHR はできないのでよしとする。\r
                                                                        // XDomain な XHR の際は Flash 等で代替し、その中に Json parser も組み込む。\r
                                                                        // http://d.hatena.ne.jp/sshi/20060904/p1\r
-                                                                       if( !X_Type_isObject( data ) ) data = X_String_parseTrustedJsonString( data );\r
+                                                                       if( !X_Type_isObject( data ) ) data = X_JSON_parseTrustableString( data );\r
                                                                        break;\r
                                                                case 'document' :\r
                                                                case 'xml' :\r
index 3fbcf77..efff27d 100644 (file)
@@ -5,8 +5,7 @@
  * http://developer.cybozu.co.jp/takesako/2007/06/opera_img-jsonp.html
  * 
  * iframe を使った jsonp の読み込みエラー判定の記事、
- * JSONPのエラーを判断する は web archive でも観れない
- * http://d.hatena.ne.jp/yuushimizu/20090128/1233146321
+ * https://web.archive.org/web/20120917100043/http://d.hatena.ne.jp/yuushimizu/20090128/1233146321
  * TODO JSONPの動的取得+エラー処理
  * http://d.hatena.ne.jp/NeoCat/20110206/1296934235
  * 
@@ -25,8 +24,7 @@
        // TODO iframe useful or not. TODO check dynamicIframe
        // TODO file: では http: は使えない
 
-X[ 'Net' ][ 'JSONP' ] = {
-       'cb' : function( accessKey, jsonString, time, opt_json2FileSize ){
+X_TEMP.X_NET_JSONP_cb = function( accessKey, jsonString, time, opt_json2FileSize ){
                        if( accessKey !== X_NET_JSONP_ACCESS_KEY || !X_NET_JSONPWrapper._busy ) return;
                        
                        X_NET_JSONPWrapper._busy = false;
@@ -34,14 +32,13 @@ X[ 'Net' ][ 'JSONP' ] = {
                        X_NET_JSONPWrapper
                                [ 'asyncDispatch' ]( {
                                        type     : jsonString ? X_EVENT_SUCCESS : X_EVENT_ERROR,
-                                       response : X_String_parseTrustedJsonString( jsonString )
+                                       response : X_JSON_parseTrustableString( jsonString )
                                } );
                        
                        X_Net_JSONP_errorTimerID && X_Timer_remove( X_Net_JSONP_errorTimerID );
                        
                        console.log( 'ms : ' + time + ' speed : ' + ( ( jsonString.length + ( opt_json2FileSize || 0 ) ) / time * 1000 ) + ' バイト/秒.' );
-               }
-};
+       };
 
 var X_NET_JSONP_ACCESS_KEY = Math.random(),
        
@@ -52,8 +49,11 @@ var X_NET_JSONP_ACCESS_KEY = Math.random(),
        X_Net_JSONP_errorTimerID;
 
 X_TEMP.X_NET_JSONP_init = function(){
-       X_NET_JSONPWrapper = X_Class_override( X[ 'Util' ][ 'NinjaIframe' ](), X_TEMP.X_NET_JSONP_params );
+       X[ 'Net' ][ '__json_cb__' ] = X_TEMP.X_NET_JSONP_cb;
+       
+       X_NET_JSONPWrapper = X_Class_override( X_NinjaIframe(), X_TEMP.X_NET_JSONP_params );
        
+       delete X_TEMP.X_NET_JSONP_cb;
        delete X_TEMP.X_NET_JSONP_init;
        delete X_TEMP.X_NET_JSONP_params;
        
@@ -77,7 +77,7 @@ X_TEMP.X_NET_JSONP_params = {
                                
                                url = X_URL_create( url, params );
                                
-                               if( !callback && !( callback = X_URL_ParamToObj( url.split( '?' )[ 1 ] )[ 'callback' ] ) ){
+                               if( !callback && !( callback = X_URL_paramToObj( url.split( '?' )[ 1 ] )[ 'callback' ] ) ){
                                        url += '&callback=cb';
                                        callback = 'cb';
                                };
@@ -95,7 +95,7 @@ X_TEMP.X_NET_JSONP_params = {
                                                '<script>',
                                                        'onunload=function(){im.onload=im.onerror=""};',
                                                        'nw=+new Date;',
-                                                       'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw', window[ 'JSON' ] ? json2FileSize : 0 ,');nw=0}}',
+                                                       'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw', window[ 'JSON' ] ? json2FileSize : 0 ,');nw=0}}',
                                                '</script>',    
                                                '<script', charset, ' id="jp"></script>',
                                                '<img id="im" src="', url, '" onload="jp.src=im.src" onerror="jp.src=im.src">'
@@ -108,7 +108,7 @@ X_TEMP.X_NET_JSONP_params = {
                                                '<script>',
                                                        'onunload=function(){clearTimeout(id)};',
                                                        'nw=0;', // なぜか必要,,,
-                                                       'function ', callback, '(o){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',parent.X.JSON.stringify(o),-nw)}',
+                                                       'function ', callback, '(o){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',parent.X.JSON.stringify(o),-nw)}',
                                                        //'function ', callback, '(o){if(nw){nw-=+new Date;postMessage("', X_NET_JSONP_SEND_MSG_KEY,' "+nw+"|"+parent.JSON.stringify(o).replace(/\\\\u([a-fA-F0-9]{4})/g,function(a,b){return String.fromCharCode(parseInt(b,16))}),"*");nw=0}}',                       
                                                        'function tm(){jp.src="', url ,'";nw=+new Date}',
                                                        'id=setTimeout(tm,16);',
@@ -116,7 +116,7 @@ X_TEMP.X_NET_JSONP_params = {
                                                
                                                /* 以下のコードは XP ie8 では動くけど、win8 IE11(8モード)で動かない 開発の便宜を取って,setTimeout を挟む
                                                '<script>',
-                                                       'function ', callback, '(o){window.parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',window.parent.JSON.stringify(o))}',
+                                                       'function ', callback, '(o){window.parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',window.parent.JSON.stringify(o))}',
                                                '</script>',
                                                '<script src="', url, '"></script>' */
                                        ];
@@ -127,7 +127,7 @@ X_TEMP.X_NET_JSONP_params = {
                                                '<script', charset, ' id="jp"></script>',
                                                '<script>',
                                                        'onunload=function(){clearTimeout(id)};',
-                                                       'function ', callback, '(o){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw)}',
+                                                       'function ', callback, '(o){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw)}',
                                                        'function tm(){jp.src="', url ,'";nw=+new Date}',
                                                        'id=setTimeout(tm,16);',
                                                '</script>'
@@ -138,7 +138,7 @@ X_TEMP.X_NET_JSONP_params = {
                                        html = [        
                                                '<script>',
                                                        'nw=+new Date;',
-                                                       'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw);nw=0}}',
+                                                       'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw);nw=0}}',
                                                        //'function ', callback, '(o){if(nw){nw-=+new Date;parent.postMessage("', X_NET_JSONP_SEND_MSG_KEY,' "+nw+"|"+JSON.stringify(o),"', location.origin, '");nw=0}}',
                                                '</script>',
                                                '<script', charset, ' src="', url, '"></script>'
@@ -151,7 +151,7 @@ X_TEMP.X_NET_JSONP_params = {
                                                '<script', charset, ' id="jp"></script>',
                                                '<script>',
                                                        'onunload=function(){clearTimeout(id)};',
-                                                       'function ', callback, '(o){nw-=new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
+                                                       'function ', callback, '(o){nw-=new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
                                                        'function t1(){document.all.jn.src="', json2Path ,'";id=setTimeout("t2()",16);nw=+new Date}',
                                                        'id=setTimeout("t1()",16);',
                                                        'function t2(){if(window.JSON){document.all.jp.src="', url ,'"}else{id=setTimeout("t2()",16)}}',
@@ -165,7 +165,7 @@ X_TEMP.X_NET_JSONP_params = {
                                                '<script', charset, ' id="jp"></script>',
                                                '<script>',
                                                        'onunload=function(){clearTimeout(id)};',
-                                                       'function ', callback, '(o){nw-=new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
+                                                       'function ', callback, '(o){nw-=new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
                                                        'function t1(){jn.src="', json2Path ,'";id=setTimeout(t2,16);nw=+new Date}',
                                                        'id=setTimeout(t1,16);',
                                                        'function t2(){if(window.JSON){jp.src="', url ,'"}else{id=setTimeout(t2,16)}}',
@@ -175,7 +175,7 @@ X_TEMP.X_NET_JSONP_params = {
                                } else {
                                        html = [
                                                '<script>',
-                                                       'function ', callback, '(o){if(nw){nw-=new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw,', json2FileSize, ');nw=0}}',
+                                                       'function ', callback, '(o){if(nw){nw-=new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw,', json2FileSize, ');nw=0}}',
                                                        'nw=+new Date;',
                                                '</script>',
                                                '<script src="', json2Path, '"></script>',
@@ -219,5 +219,5 @@ function X_NET_JSONP_iframeListener( e ){
                        X_NET_JSONPWrapper[ 'asyncDispatch' ]( X_EVENT_ERROR );
                        break;
        };
-       return X_Callback_UN_LISTEN;
+       return X_CALLBACK_UN_LISTEN;
 };
index 71f65cc..ce5021a 100644 (file)
@@ -1,13 +1,9 @@
 //{+netform"<form>によるGETとPOST"(動的に生成したフォームによるGETとPOST。)[+net,+ninjaiframe]\r
 \r
-X[ 'Net' ][ 'Form' ] = {\r
-       // 隠し iframe 使用の可否\r
-};\r
-\r
 var X_NET_Form_errorTimerID, X_Net_Form_onloadCount = 0;\r
 \r
 X_TEMP.X_NET_Form_init = function(){\r
-       X_NET_FormWrapper = X_Class_override( X[ 'Util' ][ 'NinjaIframe' ](), X_TEMP.X_NET_Form_params );\r
+       X_NET_FormWrapper = X_Class_override( X_NinjaIframe(), X_TEMP.X_NET_Form_params );\r
        \r
        delete X_TEMP.X_NET_Form_init;\r
        delete X_TEMP.X_NET_Form_params;\r
@@ -100,7 +96,7 @@ function X_NET_Form_iframeListener( e ){
                        X_NET_FormWrapper[ 'asyncDispatch' ]( X_EVENT_ERROR );\r
                        break;\r
        };\r
-       return X_Callback_UN_LISTEN;\r
+       return X_CALLBACK_UN_LISTEN;\r
 };\r
 \r
 //}+netform
\ No newline at end of file
index 7a9d4d2..16d83be 100644 (file)
@@ -89,12 +89,12 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                        iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches;\r
                                                        // speedup\r
                                                        X_NET_GIMR_timerID = X_Timer_add( 16, 0, this, X_NET_GIMR_detectImageOverIframe );\r
-                                                       return X_Callback_UN_LISTEN;\r
+                                                       return X_CALLBACK_UN_LISTEN;\r
                                                } else {\r
                                                        X_NET_GIMR_receivedString = X_Net_GIMR_decodeLocationHash( ret );\r
                                                };\r
 \r
-                                               X_NET_GIMRWrapper[ 'asyncDispatch' ]( X_String_parseTrustedJsonString( X_NET_GIMR_receivedString ) );\r
+                                               X_NET_GIMRWrapper[ 'asyncDispatch' ]( X_JSON_parseTrustableString( X_NET_GIMR_receivedString ) );\r
                                                X_NET_GIMR_receivedString = '';\r
                                                //console.dir( e );\r
 \r
@@ -104,7 +104,7 @@ function X_NET_GIMR_detectImageOverIframe(){
                                                X_NET_GIMR_lastHashString = '';\r
                                                iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_';\r
                                                \r
-                                               return X_Callback_UN_LISTEN;\r
+                                               return X_CALLBACK_UN_LISTEN;\r
                                };\r
                                ++X_NET_GIMR_phase;\r
                        };\r
index 91f7f67..86d1584 100644 (file)
@@ -238,7 +238,7 @@ function X_Net_OAuth2_detectAuthPopup(){
        } else
        if( search = X_NET_OAUTH2_detection( X_NET_OAUTH2_authorizationWindow ) ){
                pair      = X_Pair_get( this );
-               pair.code = X_URL_ParamToObj( search.slice( 1 ) )[ 'code' ];
+               pair.code = X_URL_paramToObj( search.slice( 1 ) )[ 'code' ];
 
                if( 9 < X_UA[ 'IEHost' ] ){
                        X_NET_OAUTH2_authorizationWindow.close();
@@ -257,7 +257,7 @@ function X_Net_OAuth2_detectAuthPopup(){
                X_NET_OAUTH2_authorizationWindow  = null;
                X_NET_OAUTH2_authorizationTimerID = 0;
                
-               return X_Callback_UN_LISTEN;
+               return X_CALLBACK_UN_LISTEN;
        };
 };
 
index db538e4..e8fd81b 100644 (file)
@@ -53,8 +53,8 @@ if( X_Audio_WebAudio_context ){
                                                } else
                                                if( X_Audio_WebAudio_context.decodeAudioData ){
                                                        X_Audio_WebAudio_context.decodeAudioData( e.response,
-                                                               this.onDecodeSuccess = X_Callback_create( this, this._onDecodeSuccess ),
-                                                               this.onDecodeError   = X_Callback_create( this, this._onDecodeError ) );
+                                                               this.onDecodeSuccess = X_Closure_create( this, this._onDecodeSuccess ),
+                                                               this.onDecodeError   = X_Closure_create( this, this._onDecodeError ) );
                                                } else {
                                                        this._onDecodeSuccess( X_Audio_WebAudio_context.createBuffer( e.response, false ) );
                                                };
@@ -95,9 +95,9 @@ if( X_Audio_WebAudio_context ){
                                },
                                
                                _onDecodeComplete : function(){
-                                       X_Callback_correct( this.onDecodeSuccess );
+                                       X_Closure_correct( this.onDecodeSuccess );
                                        delete this.onDecodeSuccess;
-                                       X_Callback_correct( this.onDecodeError );
+                                       X_Closure_correct( this.onDecodeError );
                                        delete this.onDecodeError;
                                },
                        
@@ -174,7 +174,7 @@ if( X_Audio_WebAudio_context ){
                                this.playing  && this.actualPause();
                    this.source   && this._sourceDispose();
        
-                   this._onended && X_Callback_correct( this._onended );       
+                   this._onended && X_Closure_correct( this._onended );        
        
                    this.gainNode && this.gainNode.disconnect();
                        },
@@ -235,7 +235,7 @@ if( X_Audio_WebAudio_context ){
                    // 破棄された X.Callback が呼ばれて、obj.proxy() でエラーになる。Firefox では、onended は使わない
                 if( false && this.source.onended !== undefined ){
                        //console.log( '> use onended' );
-                       this.source.onended = this._onended || ( this._onended = X_Callback_create( this, this._onEnded ) );
+                       this.source.onended = this._onended || ( this._onended = X_Closure_create( this, this._onEnded ) );
                 } else {
                        this._timerID && X_Timer_remove( this._timerID );
                                        this._timerID = X_Timer_once( end - begin, this, this._onEnded );
@@ -263,7 +263,7 @@ if( X_Audio_WebAudio_context ){
                                _onInterval : function(){
                                        if( !this.playing ){
                                                delete this._interval;
-                                               return X_Callback_UN_LISTEN;
+                                               return X_CALLBACK_UN_LISTEN;
                                        };
                                        this.target[ 'dispatch' ]( X_EVENT_MEDIA_PLAYING );
                                },
@@ -288,7 +288,7 @@ if( X_Audio_WebAudio_context ){
                                };
                                
                                if( this.autoLoop ){
-                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){
+                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){
                                                this.looped = true;
                                                this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );
                                                this.actualPlay();
index b15b064..7206221 100644 (file)
@@ -229,7 +229,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                                \r
                                        case 'ended' :\r
                                                if( !this._closed && this.autoLoop ){\r
-                                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
+                                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
                                                                this.looped = true;\r
                                                                this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
                                                                this.actualPlay();\r
@@ -271,7 +271,7 @@ if( X_Audio_constructor && !X_Audio_HTMLAudioWrapper_badOperaAndroid ){
                                        console.log( end + ' / ' + now );\r
                                        if( 0 + end <= 0 + now ){ // なぜか iem9 で必要,,,\r
                                                if( this.autoLoop ){\r
-                                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
+                                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
                                                                this.looped = true;\r
                                                                this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
                                                                this.actualPlay();\r
index 501326d..c716a9a 100644 (file)
@@ -59,7 +59,7 @@ if( X[ 'Pulgin' ][ 'SilverlightEnabled' ] ){
                                this._source     = source;\r
                                // X.Audio._slOnload_ は不可\r
                        this._onload     = 'XAudioSilverlightOnLoad' + ( ++X_Audio_SLAudio_uid );\r
-                               this._callback   = window[ this._onload ] = X_Callback_create( this, this.onSLReady );\r
+                               this._callback   = window[ this._onload ] = X_Closure_create( this, this.onSLReady );\r
                        this.xnodeObject = X_Node_body\r
                                [ 'create' ]( 'object', {\r
                                                type   : 'application/x-silverlight-2',\r
@@ -86,7 +86,7 @@ if( X[ 'Pulgin' ][ 'SilverlightEnabled' ] ){
                                        \r
                                        window[ this._onload ] = null;\r
                                        delete this._onload;\r
-                                       X_Callback_correct( this._callback );\r
+                                       X_Closure_correct( this._callback );\r
                                        delete this._callback;\r
        \r
                                        sender[ 'children' ][ 'add' ](\r
@@ -232,7 +232,7 @@ if( X[ 'Pulgin' ][ 'SilverlightEnabled' ] ){
                                                        // window への delete に ie5 は対応しないが、そもそも ie5 は Silverlight に非対応\r
                                                        window[ this._onload ] = null;\r
                                                        delete this._onload;\r
-                                                       X_Callback_correct( this._callback );\r
+                                                       X_Closure_correct( this._callback );\r
                                                };\r
                                                this.xnodeObject[ 'kill' ]();\r
                                                break;\r
@@ -290,7 +290,7 @@ if( X[ 'Pulgin' ][ 'SilverlightEnabled' ] ){
                                _onInterval : function(){\r
                                        if( !this.playing ){\r
                                                delete this._interval;\r
-                                               return X_Callback_UN_LISTEN;\r
+                                               return X_CALLBACK_UN_LISTEN;\r
                                        };\r
                                        this.target[ 'dispatch' ]( X_EVENT_MEDIA_PLAYING );\r
                                },\r
@@ -326,7 +326,7 @@ if( X[ 'Pulgin' ][ 'SilverlightEnabled' ] ){
                                \r
                                if( this.autoLoop ){\r
                                        console.log( '========= loop?' );\r
-                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
+                                       if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
                                                console.log( '========== loopした' );\r
                                                this.looped = true;\r
                                                this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
index 542eea1..8c86151 100644 (file)
@@ -47,9 +47,7 @@ X[ 'AudioSprite' ] = function( setting ){
                },\r
                k, i, v, track; \r
        \r
-       if( X_Audio_Sprite_instance ){\r
-               X_Audio_Sprite_instance[ 'kill' ]();\r
-       } else {\r
+       if( !X_Audio_Sprite_instance ){\r
                X_Audio_Sprite_instance = X_Class_override( X_EventDispatcher(), X_Audio_Sprite_members );\r
                X_ViewPort[ 'listen' ]( [ X_EVENT_VIEW_ACTIVATE, X_EVENT_VIEW_DEACTIVATE ], X_Audio_Sprite_instance, X_Audio_Sprite_handleEvent );\r
        };\r
@@ -338,12 +336,12 @@ function X_AudioSprite_backendHandler( e ){
                                };\r
                        };\r
                        \r
-                       return X_Callback_STOP_NOW;\r
+                       return X_CALLBACK_STOP_NOW;\r
 \r
                case X_EVENT_BACKEND_NONE :\r
                        this[ 'unlisten' ]( X_EVENT_BACKEND_READY, this, X_AudioSprite_backendHandler )\r
                                [ 'asyncDispatch' ]( X_EVENT_BACKEND_NONE );\r
-                       return X_Callback_STOP_NOW;\r
+                       return X_CALLBACK_STOP_NOW;\r
                \r
                case X_EVENT_READY :\r
                        console.log( 'X.AudioSprite - Ready!' );\r
index 37d0af2..ed6bfec 100644 (file)
@@ -57,7 +57,7 @@
                // onmouseup, but when touchend has been fired we do nothing.\r
                // this is for touchdevices which also fire a mouseup on touchend\r
                if( type & MOUSE && touch_triggered ){\r
-                       return X_Callback_STOP_NOW | X_Callback_PREVENT_DEFAULT;\r
+                       return X_CALLBACK_STOP_NOW | X_CALLBACK_PREVENT_DEFAULT;\r
                } else\r
                // mousebutton must be down or a touch event\r
                if( type & TOUCH || //sourceEventType.match(/touch/) || // touch events are always on screen\r
                                // only when the instance options have enabled this gesture\r
                                active[ gesture.name ] &&\r
                                        // if a handler returns false, we stop with the detection\r
-                                       ( ret |= ( gesture.handler( e, hammer ) || X_Callback_NONE ) );\r
+                                       ( ret |= ( gesture.handler( e, hammer ) || X_CALLBACK_NONE ) );\r
                        };\r
 \r
                        // endevent, but not the last touch, so dont stop\r
index 87cea63..5e0dce7 100644 (file)
@@ -740,11 +740,11 @@ var XUI_AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                };\r
                        };\r
                        \r
-                       arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
+                       arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Closure_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
                        if( !f.kind ){\r
                                return X_EventDispatcher_listen.call( this, type, this.User, f );\r
                        } else\r
-                       if( f.kind === X_Callback_FUNC_ONLY ){\r
+                       if( f.kind === X_CLOSURE_FUNC_ONLY ){\r
                                return X_EventDispatcher_listen.call( this, type, this.User, f.func, f.supplement );\r
                        };\r
                        return X_EventDispatcher_listen.apply( this, arguments );\r
@@ -777,11 +777,11 @@ var XUI_AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                        };\r
                                };\r
                        };\r
-                       arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
+                       arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Closure_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
                        if( !f.kind ){\r
                                return X_EventDispatcher_unlisten.apply( this, [ type, this.User, f ] );\r
                        } else\r
-                       if( f.kind === X_Callback_FUNC_ONLY ){\r
+                       if( f.kind === X_CLOSURE_FUNC_ONLY ){\r
                                return X_EventDispatcher_unlisten.apply( this, [ type, this.User, f.func, f.supplement ] );\r
                        };\r
                        return X_EventDispatcher_unlisten.apply( this, arguments );\r
@@ -794,12 +794,12 @@ var XUI_AbstractUINode = X_EventDispatcher[ 'inherits' ](
                                type = e.type || e;\r
                        \r
                        // TODO captureEvent PointerEvent\r
-                       if( ret & X_Callback_CAPTURE_POINTER && !this.hitChildData && XUI_Event._POINTER_MOVE === type ){\r
+                       if( ret & X_CALLBACK_CAPTURE_POINTER && !this.hitChildData && XUI_Event._POINTER_MOVE === type ){\r
                                this.rootData.monopolyNodeData = this;\r
                                return ret;\r
                        };\r
                        this.rootData.monopolyNodeData = null;\r
-                       if( xve._START_BUBLEUP < type && this.parentData && !( ret & X_Callback_STOP_PROPAGATION ) && !( ret & X_Callback_STOP_NOW ) ) return this.parentData[ 'dispatch' ]( e );\r
+                       if( xve._START_BUBLEUP < type && this.parentData && !( ret & X_CALLBACK_STOP_PROPAGATION ) && !( ret & X_CALLBACK_STOP_NOW ) ) return this.parentData[ 'dispatch' ]( e );\r
                        return ret;\r
                },\r
                \r
@@ -1073,14 +1073,14 @@ X.UI.AbstractUINode = X_Class_create(
                                        for( i = 0, l = list.length; i < l; ++i ){\r
                                                f = list[ i ];\r
                                                switch( f.kind ){\r
-                                                       case X_Callback_THIS_FUNC :\r
+                                                       case X_CLOSURE_THIS_FUNC :\r
                                                                if( f.lock ){\r
                                                                        X_EventDispatcher_systemListen( newNode, type, f.context === this ? newNode : f.context, f.func, f.supplement );\r
                                                                } else {\r
                                                                        newNode[ f.once ? 'listenOnce' : 'listen' ]( type, f.context === this ? newNode : f.context, f.func, f.supplement );\r
                                                                };\r
                                                                break;\r
-                                                       case X_Callback_HANDLEEVENT :\r
+                                                       case X_CLOSURE_HANDLEEVENT :\r
                                                                if( f.lock ){\r
                                                                        X_EventDispatcher_systemListen( newNode, type, f.context === this ? newNode : f.context, f.supplement );\r
                                                                } else {\r
@@ -1088,7 +1088,7 @@ X.UI.AbstractUINode = X_Class_create(
                                                                };\r
                                                                break;\r
                                                        /*\r
-                                                       case X_Callback_FUNC_ONLY :\r
+                                                       case X_CLOSURE_FUNC_ONLY :\r
                                                                if( f.lock ){\r
                                                                        X_EventDispatcher_systemListen( newNode, type, f.func, f.supplement );\r
                                                                } else {\r
index 170dfe4..5e49890 100644 (file)
@@ -132,13 +132,13 @@ var XUI_ScrollBox = XUI_ChromeBox.inherits(
 function X_UI_ScrollBox_onLayoutBefore( e ){\r
        if( e[ 'cancelable' ] && this.isInTransition && X_Node_Anime_translateZ ){\r
                this[ 'listenOnce' ]( XUI_Event.SCROLL_END, X_UI_rootData, X_UI_rootData.calculate );\r
-               return X_Callback_PREVENT_DEFAULT;\r
+               return X_CALLBACK_PREVENT_DEFAULT;\r
        };\r
        this.scrollXRatio = this.scrollX ? this.scrollXMax / this.scrollX : 0;\r
        this.scrollYRatio = this.scrollY ? this.scrollYMax / this.scrollY : 0;\r
        this.xnodeSlider.stop();\r
        this.isInTransition = false;\r
-       return X_Callback_NONE;\r
+       return X_CALLBACK_NONE;\r
 };\r
 \r
 function X_UI_ScrollBox_onLayoutComplete( e ){\r
@@ -222,7 +222,7 @@ function X_UI_ScrollBox_onLayoutComplete( e ){
                };\r
 \r
 function X_UI_ScrollBox_onStart( e ){\r
-       var ret = X_Callback_NONE;\r
+       var ret = X_CALLBACK_NONE;\r
 \r
        // React to left mouse button only\r
        if( e.pointerType === 'mouse' && e.button !== 0 ){\r
@@ -262,11 +262,11 @@ function X_UI_ScrollBox_onStart( e ){
        this[ 'listen' ]( XUI_Event._POINTER_MOVE, this, X_UI_ScrollBox_onMove );\r
        this[ 'listen' ]( [ XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL ], this, X_UI_ScrollBox_onEnd );\r
 \r
-       return ret | X_Callback_PREVENT_DEFAULT;\r
+       return ret | X_CALLBACK_PREVENT_DEFAULT;\r
 };\r
 \r
 function X_UI_ScrollBox_onMove( e ){\r
-       var ret = X_Callback_NONE,\r
+       var ret = X_CALLBACK_NONE,\r
                deltaX, deltaY, timestamp,\r
                newX, newY,\r
                absDistX, absDistY;\r
@@ -363,11 +363,11 @@ function X_UI_ScrollBox_onMove( e ){
                this.startY = this.scrollY;\r
        };\r
        // イベントの拘束\r
-       return ret | X_Callback_PREVENT_DEFAULT | X_Callback_CAPTURE_POINTER;\r
+       return ret | X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_CAPTURE_POINTER;\r
 };\r
 \r
 function X_UI_ScrollBox_onEnd( e ){\r
-       var ret    = X_Callback_NONE,\r
+       var ret    = X_CALLBACK_NONE,\r
                time   = 0,\r
                easing = '',\r
                newX, newY,\r
@@ -472,13 +472,13 @@ function X_UI_ScrollBox_resetPosition( that, time ){
 \r
 function X_UI_ScrollBox_onAnimeEnd( e ){\r
        if( e.target !== this.xnodeSlider || !this.isInTransition ){\r
-               return X_Callback_NONE;\r
+               return X_CALLBACK_NONE;\r
        };\r
        if( !X_UI_ScrollBox_resetPosition( this, this.bounceTime ) ){\r
                this.isInTransition = false;\r
                this[ 'dispatch' ]( XUI_Event.SCROLL_END );\r
        };\r
-       return X_Callback_NONE;\r
+       return X_CALLBACK_NONE;\r
 };\r
 \r
 function X_UI_ScrollBox_momentum( current, start, time, lowerMargin, wrapperSize, deceleration ){\r
index e4d2ab4..09ca3c5 100644 (file)
@@ -9,7 +9,7 @@ function X_UI_eventRellay( e ){
                i       = 0,
                data    = X_UI_rootData,
                sysOnly = false,
-               ret     = X_Callback_NONE,
+               ret     = X_CALLBACK_NONE,
                list, parent, _ret;
 
        // mouseup で alert を出すと mouseleave が発生、ということでイベント中のイベント発火を禁止
@@ -22,9 +22,9 @@ function X_UI_eventRellay( e ){
        
        e.type = type;
 
-       if( data && ( data = data.monopolyNodeData ) && ( ret = data[ 'dispatch' ]( e ) ) & X_Callback_CAPTURE_POINTER ){
+       if( data && ( data = data.monopolyNodeData ) && ( ret = data[ 'dispatch' ]( e ) ) & X_CALLBACK_CAPTURE_POINTER ){
                X_UI_eventBusy = false;
-               return ret | X_Callback_PREVENT_DEFAULT;
+               return ret | X_CALLBACK_PREVENT_DEFAULT;
        };
        
        list = X_UI_rootData.hoverList;
@@ -36,7 +36,7 @@ function X_UI_eventRellay( e ){
        while( data ){
                _ret = data[ 'dispatch' ]( e, sysOnly );
                ret |= _ret;
-               if( _ret & X_Callback_CAPTURE_POINTER || _ret & X_Callback_STOP_PROPAGATION || _ret & X_Callback_STOP_NOW ) break; // sysOnly = true;
+               if( _ret & X_CALLBACK_CAPTURE_POINTER || _ret & X_CALLBACK_STOP_PROPAGATION || _ret & X_CALLBACK_STOP_NOW ) break; // sysOnly = true;
                data = data.parentData;
        };
        
@@ -59,7 +59,7 @@ function X_UI_eventRellay( e ){
                };
        };
        X_UI_eventBusy = false;
-       return ret | X_Callback_PREVENT_DEFAULT;
+       return ret | X_CALLBACK_PREVENT_DEFAULT;
 };
 
 /*
@@ -140,8 +140,8 @@ var XUI_PageRoot = XUI_Box.inherits(
                        var cancelable = !e || ( e.type !== X_EVENT_VIEW_RESIZED && e.type !== X_EVENT_BASE_FONT_RESIZED ),
                                size, font, w, h;
                        
-                       if( this[ 'dispatch' ]( { type : XUI_Event.LAYOUT_BEFORE, 'cancelable' : cancelable } ) & X_Callback_PREVENT_DEFAULT && cancelable ){
-                               return X_Callback_NONE;
+                       if( this[ 'dispatch' ]( { type : XUI_Event.LAYOUT_BEFORE, 'cancelable' : cancelable } ) & X_CALLBACK_PREVENT_DEFAULT && cancelable ){
+                               return X_CALLBACK_NONE;
                        };
                        
                        size = X[ 'ViewPort' ][ 'getSize' ]();
@@ -153,7 +153,7 @@ var XUI_PageRoot = XUI_Box.inherits(
                        
                        X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, this, XUI_PageRoot_onViewUpdate );
                        
-                       return X_Callback_NONE;
+                       return X_CALLBACK_NONE;
                },
                
                updateCoursor : function( cursor ){
index e5c7745..7d9dd92 100644 (file)
@@ -16,9 +16,9 @@ document.write( [
                'js/01_core/06_XString.js',\r
                'js/01_core/08_XURL.js',\r
                \r
-               'js/01_core/10_XPair.js',       \r
-               'js/01_core/11_XClosure.js',\r
-               'js/01_core/12_XCallback.js',\r
+               'js/01_core/10_XPair.js',\r
+               'js/01_core/11_XCallback.js',\r
+               'js/01_core/12_XClosure.js',\r
                'js/01_core/13_XClass.js',\r
                'js/01_core/14_XEvent.js',\r
                'js/01_core/15_XEventDispatcher.js',\r