OSDN Git Service

Version 0.6.133, fix for closure compiler - ADVANCED_OPTIMIZATIONS
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 02_XNode.js
index 3557862..4b2ccd3 100644 (file)
@@ -22,7 +22,7 @@ var
                DIRTY_CLASSNAME        : 2 << 13, // X_Node_CSS_getCharSize, width, height, x, y\r
                DIRTY_ATTR             : 2 << 14, // X_Node_CSS_getCharSize, width, height, x, y\r
                DIRTY_CSS              : 2 << 15, // X_Node_CSS_getCharSize, width, height, x, y\r
-               DIRTY_IE_FILTER        : X_UA.IE < 10 && X_UA.ActiveX ? 2 << 16 : 0, // \r
+               DIRTY_IE_FILTER        : X_UA[ 'IE' ] < 10 && X_UA[ 'ActiveX' ] ? 2 << 16 : 0, // \r
 \r
                ACTUAL_LISTENING       : 2 << 17,\r
                OLD_ATTRTEXT           : 2 << 18,\r
@@ -37,12 +37,12 @@ var
                GPU_RELEASE_RESERVED   : 2 << 23, // 4:GPU解除予約\r
                GPU_CHILD              : 2 << 24, \r
                \r
-               IE4_HAS_TEXTNODE       : X_UA.IE4 ? 2 << 21 : 0,\r
-               IE4_HAS_ELEMENT        : X_UA.IE4 ? 2 << 22 : 0,\r
-               IE4_DIRTY_CHILDREN     : X_UA.IE4 ? 2 << 23 : 0,\r
-               IE4_FIXED              : X_UA.IE4 ? 2 << 24 : 0,\r
+               IE4_HAS_TEXTNODE       : X_UA[ 'IE4' ] ? 2 << 21 : 0,\r
+               IE4_HAS_ELEMENT        : X_UA[ 'IE4' ] ? 2 << 22 : 0,\r
+               IE4_DIRTY_CHILDREN     : X_UA[ 'IE4' ] ? 2 << 23 : 0,\r
+               IE4_FIXED              : X_UA[ 'IE4' ] ? 2 << 24 : 0,\r
                \r
-               IE5_DISPLAY_NONE_FIX   : X_UA.IE5 && X_UA.ActiveX ? 2 << 24 : 0\r
+               IE5_DISPLAY_NONE_FIX   : X_UA[ 'IE5' ] && X_UA[ 'ActiveX' ] ? 2 << 24 : 0\r
        },\r
 \r
        X_Node_BITMASK_RESET_STYLE  = ( ( 2 << 29 ) - 1 + ( 2 << 29 ) ) ^ (\r
@@ -80,12 +80,12 @@ var
                IMAGE       : 10\r
        },\r
        \r
-       X_Node_strictElmCreation    = !X_UA.MacIE && X_UA.IE5678,// && !X_UA.MacIE;\r
+       X_Node_strictElmCreation    = !X_UA[ 'MacIE' ] && X_UA[ 'IE' ] <= 8,\r
        \r
-       X_Node_documentFragment     = document.createDocumentFragment && ( !X_UA.IE || 5.5 <= X_UA.IE ) && document.createDocumentFragment(),\r
+       X_Node_documentFragment     = document.createDocumentFragment && ( !X_UA[ 'IE' ] || 5.5 <= X_UA[ 'IE' ] ) && document.createDocumentFragment(),\r
        \r
        // 子の生成後に リアル文書 tree に追加する\r
-       X_Node_addTreeAfterChildren = !( X.UA.IE < 9 ),\r
+       X_Node_addTreeAfterChildren = !( X_UA[ 'IE' ] < 9 ),\r
        \r
        X_Node_displayNoneFixForIE5 = !!X_Node_State.IE5_DISPLAY_NONE_FIX,\r
        \r
@@ -95,12 +95,19 @@ var
        \r
        X_Node_outerXNode    = null,\r
        \r
-       X_Node_updateTimerID = 0,\r
-/*\r
+       X_Node_updateTimerID = 0;\r
+\r
+/**\r
  * Node( rawElement | rawTextnode | htmlString | textString )\r
- */    \r
-       Node = X.Node = X.EventDispatcher.inherits(\r
-       'XDomNode',\r
+ *     \r
+ * @alias X.Node\r
+ * @class Node HTMLElement、TextNode をラップし jQuery 風な API で操作できます。\r
+ * @constructor \r
+ * @constructs Node\r
+ * @extends {EventDispatcher}\r
+ */\r
+var    Node = X.Node = X.EventDispatcher.inherits(\r
+       'X.Node',\r
        X.Class.POOL_OBJECT, // X.Class.FINAL\r
        {\r
                _uid       : 0,\r
@@ -113,7 +120,7 @@ var
                length     : 1,\r
                parent     : null, // remove された枝も親子構造は維持している。\r
                _xnodes    : null, // Array.<Node>\r
-               _gpuParent : null,\r
+               _gpuParent : null, // TODO\r
 \r
                _tag       : '',\r
                _text      : '',\r
@@ -141,14 +148,14 @@ var
                                this._tag       = v.toUpperCase();\r
                                arguments[ 1 ] && this.attr( arguments[ 1 ] );\r
                                css = arguments[ 2 ];\r
-                               css && this[ X.Type.isString( css ) ? 'cssText' : 'css' ]( css );\r
+                               css && this[ X_Type_isString( css ) ? 'cssText' : 'css' ]( css );\r
                        } else\r
                        if( X_Node_newByText ){\r
                                X_Node_newByText = false;\r
                                this._text       = v;\r
                        } else {\r
                                if( 1 < arguments.length ) return new X_NodeList( arguments );\r
-                               if( X.Type.isArray( v ) && v.length ) return new X_NodeList( v );\r
+                               if( X_Type_isArray( v ) && v.length ) return new X_NodeList( v );\r
 \r
                                switch( X_Node_getType( v ) ){\r
                                        case X_Node_TYPE.XNODE :\r
@@ -276,9 +283,9 @@ function X_Node_getType( v ){
        if( v === document ) return X_Node_TYPE.DOCUMENT;\r
        if( v.constructor === Node ) return X_Node_TYPE.XNODE;\r
        if( v.constructor === X_NodeList ) return X_Node_TYPE.XNODE_LIST;\r
-       if( X.Type.isHTMLElement( v ) ) return X_Node_TYPE.RAW_HTML;\r
+       if( X_Type_isHTMLElement( v ) ) return X_Node_TYPE.RAW_HTML;\r
        if( v.nodeType === 3 ) return X_Node_TYPE.RAW_TEXT;\r
-       if( X.Type.isString( v ) ){\r
+       if( X_Type_isString( v ) ){\r
                return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? X_Node_TYPE.HTML_STRING : X_Node_TYPE.STRING;\r
        };\r
        return 0;\r
@@ -317,7 +324,7 @@ var X_Node_isXmlDocument =
                X_UA_DOM.IE4 ?\r
                        X.emptyFunction :\r
                        (function( root ){\r
-                               if( X.Type.isBoolean( root.isXML ) ) return root.isXML;\r
+                               if( X_Type_isBoolean( root.isXML ) ) return root.isXML;\r
                                return root.isXML = root._rawObject.createElement( 'p' ).tagName !== root._rawObject.createElement( 'P' ).tagName;\r
                        }),\r
        X_Node_CHASHE     = [],\r
@@ -461,7 +468,7 @@ function X_Node_append( v ){
                        // 親の xnodes から v を消す\r
                        v.parent && v.remove();\r
                        // IE4 でテキストノードの追加、FIXED 済でない場合、親に要素の追加を通知\r
-                       if( X_UA.IE4 && !v._tag && ( this._flags & X_Node_State.IE4_FIXED ) === 0 ) this._flags |= X_Node_State.IE4_DIRTY_CHILDREN;\r
+                       if( X_UA[ 'IE4' ] && !v._tag && ( this._flags & X_Node_State.IE4_FIXED ) === 0 ) this._flags |= X_Node_State.IE4_DIRTY_CHILDREN;\r
                        break;\r
                default :\r
                        return this;\r
@@ -517,7 +524,7 @@ function X_Node_appendAt( start, v ){
                        // 親の xnodes から v を消す\r
                        v.parent && v.remove();\r
                        // IE4 でテキストノードの追加、FIXED 済でない場合、親に要素の追加を通知\r
-                       if( X_UA.IE4 && !v._tag && ( this._flags & X_Node_State.IE4_FIXED ) === 0 ) this._flags |= X_Node_State.IE4_DIRTY_CHILDREN;\r
+                       if( X_UA[ 'IE4' ] && !v._tag && ( this._flags & X_Node_State.IE4_FIXED ) === 0 ) this._flags |= X_Node_State.IE4_DIRTY_CHILDREN;\r
                        break;\r
                default :\r
                        return this;\r
@@ -792,7 +799,7 @@ function X_Node_className( v ){
        \r
        // setter\r
        if( this._className === v ) return this;\r
-       if( !v || !X.Type.isString( v ) ){\r
+       if( !v || !X_Type_isString( v ) ){\r
                delete this._className;\r
        } else {\r
                // cleanup\r
@@ -989,7 +996,7 @@ function X_Node_call( name /*, opt_args... */ ){
        };\r
        \r
        func = raw[ name ];\r
-       if( X.Type.isFunction( func ) ){\r
+       if( X_Type_isFunction( func ) ){\r
                if( l ){\r
                        args = X_Object_cloneArray( arguments );\r
                        args.shift();\r
@@ -997,7 +1004,7 @@ function X_Node_call( name /*, opt_args... */ ){
                };\r
                return raw[ name ]();           \r
        } else\r
-       if( X.Type.isUnknown( func ) ){\r
+       if( X_Type_isUnknown( func ) ){\r
                // typeof func === unknown に対策\r
                // http://la.ma.la/blog/diary_200509031529.htm          \r
                if( l ){\r
@@ -1059,7 +1066,7 @@ function X_Node_startUpdate( time ){
 \r
        if( time ){\r
                // X.Timer 経由でないと発火しない このイベントでサイズを取ると無限ループに\r
-               X_System._listeners && X_System._listeners[ X.Event.BEFORE_UPDATE ] && X_System.dispatch( X.Event.BEFORE_UPDATE );\r
+               X_System._listeners && X_System._listeners[ X_Event.BEFORE_UPDATE ] && X_System.dispatch( X_Event.BEFORE_UPDATE );\r
        };\r
 \r
        removal = X_Node_reserveRemoval;\r
@@ -1088,10 +1095,10 @@ function X_Node_startUpdate( time ){
        \r
        if( time ){\r
                // X.Timer 経由でないと発火しない このイベントでサイズを取ると無限ループに\r
-               X_System._listeners && X_System._listeners[ X.Event.UPDATED ] && X_System.dispatch( X.Event.UPDATED );  \r
+               X_System._listeners && X_System._listeners[ X_Event.UPDATED ] && X_System.dispatch( X_Event.UPDATED );  \r
        };\r
        \r
-       X_ViewPort._listeners && X_ViewPort._listeners[ X.Event.AFTER_UPDATE ] && X_ViewPort.asyncDispatch( X.Event.AFTER_UPDATE );\r
+       X_ViewPort._listeners && X_ViewPort._listeners[ X_Event.AFTER_UPDATE ] && X_ViewPort.asyncDispatch( X_Event.AFTER_UPDATE );\r
 };\r
 \r
 /*\r
@@ -1164,7 +1171,7 @@ var X_Node__commitUpdate =
                                if( !that._tag ){\r
                                        that._flags &= X_Node_BitMask_RESET_DIRTY;\r
                                        that._rawObject = elm = document.createTextNode( X_String_chrReferanceTo( that._text ) );\r
-                                       if( !X.UA.IE ){\r
+                                       if( !X_UA[ 'IE' ] ){\r
                                                elm.UID = that._uid;\r
                                        };\r
                                } else\r
@@ -1213,7 +1220,7 @@ var X_Node__commitUpdate =
                                                \r
                                                // http://outcloud.blogspot.jp/2010/09/iframe.html\r
                                                // この問題は firefox3.6 で確認\r
-                                               if( X_UA.Gecko ){\r
+                                               if( X_UA[ 'Gecko' ] ){\r
                                                        if( that._tag === 'IFRAME' && ( !that._attrs || !that._attrs[ 'src' ] ) ){\r
                                                                //elm.contentWindow.location.replace = elm.src = 'about:blank';\r
                                                                that.attr( 'src', 'about:blank' );\r
@@ -1268,7 +1275,7 @@ var X_Node__commitUpdate =
                                        parentElement.insertBefore( elm, nextElement ) :\r
                                        parentElement.appendChild( elm );\r
                                \r
-                               if( X_UA.Gecko && that._tag === 'IFRAME' && elm.contentWindow ){\r
+                               if( X_UA[ 'Gecko' ] && that._tag === 'IFRAME' && elm.contentWindow ){\r
                                        // tree に追加されるまで contentWindow は存在しない。\r
                                        elm.contentWindow.location.replace = elm.src;\r
                                };\r
@@ -1389,7 +1396,7 @@ var X_Node__updateRawNode =
                        };\r
                        // className\r
                        if( that._flags & X_Node_State.DIRTY_CLASSNAME ){\r
-                               that._className ? ( elm.className = that._className ) : ( elm.className && elm.removeAttribute( X_UA.IE < 8 ? 'className' : 'class' ) ); // className は ie7-                  \r
+                               that._className ? ( elm.className = that._className ) : ( elm.className && elm.removeAttribute( X_UA[ 'IE' ] < 8 ? 'className' : 'class' ) ); // className は ie7-                     \r
                        };\r
                        \r
                        // attr\r
@@ -1402,7 +1409,7 @@ var X_Node__updateRawNode =
                                        switch( that._tag + k ){\r
                                                case 'TEXTAREAvalue' :\r
                                                        // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので\r
-                                                       if( !X_UA.MacIE && X_UA.IE5x ){\r
+                                                       if( !X_UA[ 'MacIE' ] && X_UA[ 'IE5x' ] ){\r
                                                                elm.firstChild ?\r
                                                                        ( elm.firstChild.data = v || '' ) :\r
                                                                        elm.appendChild( document.createTextNode( v || '' ) );\r
@@ -1413,7 +1420,7 @@ var X_Node__updateRawNode =
                                                case 'IFRAMEsrc' :\r
                                                        // http://outcloud.blogspot.jp/2010/09/iframe.html\r
                                                        // この問題は firefox3.6 で確認\r
-                                                       if( X_UA.Gecko && elm.contentWindow ){\r
+                                                       if( X_UA[ 'Gecko' ] && elm.contentWindow ){\r
                                                                elm.contentWindow.location.replace = elm.src = v || '';\r
                                                                continue;\r
                                                        };\r
@@ -1423,7 +1430,7 @@ var X_Node__updateRawNode =
                                                        // http://d.hatena.ne.jp/NeoCat/20080921/1221940658\r
                                                        // こちらに名前をsetしないとtargetが動作しない\r
                                                        // これってあとから name を変更できないバグでは? itozyun\r
-                                                       // if( X_UA.IE ) elm.name = elm.contentWindow.name = v || '';\r
+                                                       // if( X_UA[ 'IE' ] ) elm.name = elm.contentWindow.name = v || '';\r
                                        };\r
                                        \r
                                        //if( X_EMPTY_OBJECT[ k ] ) continue;\r
@@ -1438,7 +1445,7 @@ var X_Node__updateRawNode =
                        // style\r
                        if( that._flags & X_Node_State.DIRTY_CSS ){\r
                                if( that._flags & X_Node_State.OLD_CSSTEXT ? X_Node_CSS_objToCssText( that ) : that._cssText ){\r
-                                       X_UA.Opera78 || X_UA.NN6 ?\r
+                                       X_UA[ 'Opera78' ] || X_UA[ 'NN6' ] ?\r
                                                elm.setAttribute( 'style', that._cssText ) : // opera8用\r
                                                ( elm.style.cssText = that._cssText );\r
                                } else {\r
@@ -1660,7 +1667,7 @@ var X_Node__actualRemove =
                                };\r
                        };\r
                        \r
-                       if( !X_UA.MacIE ){\r
+                       if( !X_UA[ 'MacIE' ] ){\r
                                // elm.parentNode.tagName for ie7\r
                                !isChild && elm.parentNode && elm.parentNode.tagName && elm.parentNode.removeChild( elm );\r
                        } else {\r
@@ -1706,5 +1713,5 @@ var X_Node__actualRemove =
                }) :\r
                (function(){});\r
 \r
-X_ViewPort.listenOnce( X.Event.UNLOAD, X_Node__actualRemove, [ X_Node_html, true ] );\r
+X_ViewPort.listenOnce( X_Event.UNLOAD, X_Node__actualRemove, [ X_Node_html, true ] );\r
 \r