OSDN Git Service

Version 0.6.122, add xnode._flags & fix X.Util.NinjaIframe.
[pettanr/clientJs.git] / 0.6.x / js / 02_dom / 22_XTreeBuilder.js
index 86dd109..a422d9d 100644 (file)
@@ -8,7 +8,7 @@ X_TEMP._isCleanupTarget = function( elm ){
                ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || cname.indexOf( ' cleanup-target ' ) !== -1 );\r
 };\r
 \r
-if( X.UA.MacIE ){\r
+if( X_UA.MacIE ){\r
 \r
        X_TEMP._fixed_remove = function( node, xnode ){\r
                var parent   = node.parentNode, l;\r
@@ -86,7 +86,7 @@ if( X.UA.MacIE ){
        };\r
        \r
 } else\r
-if( X.UA.Opera7 ){\r
+if( X_UA.Opera7 ){\r
 \r
        X_TEMP._fixed_remove = function( node ){\r
                if( node.nodeType === 1 || node.nodeType === 3 ){\r
@@ -108,16 +108,18 @@ if( X.UA.Opera7 ){
 X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,\r
        X_UA_DOM.W3C ?\r
 (function(){\r
-       var r    = Node._body,\r
+       var r    = X_Node_body,\r
                body = r._rawObject,\r
                copy, i, l, node, html,\r
                elmProgress;\r
        \r
        if( !X_TEMP.X_Dom_useBuilder ) return;\r
        \r
+       X_HTMLParser_skipFixNesting = true;\r
+       \r
        // TODO\r
        // textarea の内容を控えて、消す。xnode tree 構築後に復帰。でないと、html パースでこける\r
-       //X.UA.MacIE && alert( body.innerHTML );\r
+       //X_UA.MacIE && alert( body.innerHTML );\r
        // cleanup tree \r
        (function/*cleanUpTree*/( elm, skip, head ){\r
                var nodes      = X_Object_cloneArray( elm.childNodes ),\r
@@ -157,7 +159,7 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,
                                        // ブロック要素直下のスペースだけは削除??\r
                                default :\r
                                        //console.log( 'Remove type: ' + node.nodeType + ' value: ' + node.nodeValue );\r
-                                       if( !X.UA.Opera7 /*&& !X.UA.MacIE */ ){\r
+                                       if( !X_UA.Opera7 /*&& !X_UA.MacIE */ ){\r
                                                elm.removeChild( node );\r
                                        } else {\r
                                                X_TEMP._fixed_remove( node );\r
@@ -165,13 +167,13 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,
                                        //++count;\r
                        };\r
                };\r
-       })( X.UA.MacIE ? ( copy = body.cloneNode( true ) ) : body );\r
+       })( X_UA.MacIE ? ( copy = body.cloneNode( true ) ) : body );\r
 \r
-       if( X.UA.MacIE ){\r
+       if( X_UA.MacIE ){\r
                document.write( html = copy.innerHTML );\r
        } else {\r
                // body の属性値の取得\r
-               if( X.UA.IE5678 ){\r
+               if( X_UA.IE5678 ){\r
                        html = body.innerHTML.split( X_String_CRLF ).join( '' ); // 不要な改行が入る\r
                } else {\r
                        html = body.innerHTML;\r
@@ -198,17 +200,17 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,
                        }\r
                )\r
                .listenOnce( X.Event.SUCCESS, function( e ){\r
-                       var xnodes = Node._body._xnodes = [], t;\r
+                       var xnodes = X_Node_body._xnodes = [], t;\r
                        xnodes.push.apply( xnodes, e.xnodes );\r
                        elmProgress.style.width = '100%';\r
 \r
-                       X_TEMP.asyncCreateTree( Node._body, body.childNodes, elmProgress );\r
+                       X_TEMP.asyncCreateTree( X_Node_body, body.childNodes, elmProgress );\r
                } );\r
 \r
 }) :\r
 X_UA_DOM.IE4 ?\r
 (function(){\r
-       var r    = Node._body,\r
+       var r    = X_Node_body,\r
                body = r._rawObject,\r
                elmProgress = '_xdom_builder_progress',\r
                html;\r
@@ -234,11 +236,11 @@ X_UA_DOM.IE4 ?
                )\r
                .listenOnce( X.Event.SUCCESS,\r
                        function( e ){\r
-                               var xnodes = Node._body._xnodes = [], t;\r
+                               var xnodes = X_Node_body._xnodes = [], t;\r
                                xnodes.push.apply( xnodes, e.xnodes );\r
                                elmProgress.style.width = '100%';\r
                                \r
-                               X_TEMP.asyncCreateTree( Node._body, body.childNodes || body.children, elmProgress );\r
+                               X_TEMP.asyncCreateTree( X_Node_body, body.childNodes || body.children, elmProgress );\r
                        }\r
                );\r
 }) :\r
@@ -297,7 +299,7 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){
                                        //alert( 'koko?' );\r
                                        X.Timer.once( 0, X_TEMP.asyncCreateTree, [ null, null, elmProgress, async || { stack : stack, current : i < l && current, done : done } ] );\r
                                        // progress\r
-                                       elmProgress.style.width = ( ( 1 - done / Node._chashe.length ) * 100 | 0 ) + '%';\r
+                                       elmProgress.style.width = ( ( 1 - done / X_Node_CHASHE.length ) * 100 | 0 ) + '%';\r
                                        return;\r
                                };\r
                        };                      \r
@@ -311,6 +313,8 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){
        delete X_TEMP.bindElementToXnode;\r
        delete X_TEMP.X_Dom_useBuilder;\r
        delete X_TEMP._isCleanupTarget;\r
+       \r
+       X_HTMLParser_skipFixNesting = false;\r
 };\r
 \r
 X_TEMP.bindElementToXnode =\r
@@ -330,7 +334,7 @@ X_TEMP.bindElementToXnode =
                                elm = elems[ current.j ];\r
                                tag = elm.tagName && elm.tagName.toUpperCase();\r
                                if( ( elm.nodeType !== 1 && elm.nodeType !== 3 ) || tag === '!' || ( tag && tag.charAt( 0 ) === '/' ) ){\r
-                                       if( !X.UA.Opera7 && !X.UA.MacIE ){\r
+                                       if( !X_UA.Opera7 && !X_UA.MacIE ){\r
                                                elm.parentNode.removeChild( elm );\r
                                        } else {\r
                                                X_TEMP._fixed_remove( elm );\r
@@ -342,7 +346,7 @@ X_TEMP.bindElementToXnode =
                                        if( elm.nodeType === 3 ){\r
                                                if( !( text = elm.data ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
                                                        //alert( text.charCodeAt( 0 ) );\r
-                                                       if( !X.UA.Opera7 && !X.UA.MacIE ){\r
+                                                       if( !X_UA.Opera7 && !X_UA.MacIE ){\r
                                                                elm.parentNode.removeChild( elm );\r
                                                        } else {\r
                                                                X_TEMP._fixed_remove( elm );\r
@@ -364,7 +368,7 @@ X_TEMP.bindElementToXnode =
                                                        xnode._tag = tag;\r
                                                //};\r
                                                xnode._root   = parent._root;\r
-                                               xnode._dirty  = 0;\r
+                                               xnode._flags &= X_Node_DIRTY_MASK_RESET;\r
                                                elm.UID       = xnode._uid;\r
                                                current.xtext = null;\r
                                                \r
@@ -415,7 +419,7 @@ X_TEMP.bindElementToXnode =
                                \r
                                ++current.j;\r
                                xnode._rawObject = elm;\r
-                               xnode._dirty     = 0;\r
+                               xnode._flags    &= X_Node_DIRTY_MASK_RESET;\r
                                xnode._text      = elm.data; // 正確\r
                                xnode._root      = parent._root;\r
                                if( !skipCleanup ){\r
@@ -497,7 +501,7 @@ X_TEMP.bindElementToXnode =
                                        ++current.j;\r
                                        \r
                                        xnode._rawObject = elm;\r
-                                       xnode._dirty     = 0;\r
+                                       xnode._flags    &= X_Node_DIRTY_MASK_RESET;\r
                                        xnode._root      = parent._root;\r
                                        //xnode._tag     = X_Dom_DTD_TAG_FIX[ tag ] || tag;\r
                                        if( X_TEMP._isCleanupTarget( elm ) ){ //!xnode.hasClass( 'skip-cleanup' ) && ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){\r
@@ -541,7 +545,7 @@ X_TEMP.bindElementToXnode =
                        };\r
                \r
                        // textNode がある\r
-                       ( current.flag & 6 ) && ( parent._dirty |= X_Node_Dirty.IE4_TEXTNODE_FIX );\r
+                       ( current.flag & 6 ) && ( parent._flags |= X_Node_State.IE4_TEXTNODE_FIX );\r
                });\r
 \r
 console.log( 'X.Dom.Builder' );\r