X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;ds=sidebyside;f=0.6.x%2Fjs%2F02_dom%2F22_XTreeBuilder.js;h=a422d9d11fc3691cced72b1f569c2ce15052fd19;hb=572e81e88d5e6f8e3c5d73df7c95e61f1c4544e0;hp=97df49d37bca9b23435325f836ef53aec6390b2e;hpb=9f5ab564d20a8bd6438693146ae73209c78a2c5e;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/02_dom/22_XTreeBuilder.js b/0.6.x/js/02_dom/22_XTreeBuilder.js index 97df49d..a422d9d 100644 --- a/0.6.x/js/02_dom/22_XTreeBuilder.js +++ b/0.6.x/js/02_dom/22_XTreeBuilder.js @@ -8,7 +8,7 @@ X_TEMP._isCleanupTarget = function( elm ){ ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || cname.indexOf( ' cleanup-target ' ) !== -1 ); }; -if( X.UA.MacIE ){ +if( X_UA.MacIE ){ X_TEMP._fixed_remove = function( node, xnode ){ var parent = node.parentNode, l; @@ -86,7 +86,7 @@ if( X.UA.MacIE ){ }; } else -if( X.UA.Opera7 ){ +if( X_UA.Opera7 ){ X_TEMP._fixed_remove = function( node ){ if( node.nodeType === 1 || node.nodeType === 3 ){ @@ -115,9 +115,11 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, if( !X_TEMP.X_Dom_useBuilder ) return; + X_HTMLParser_skipFixNesting = true; + // TODO // textarea の内容を控えて、消す。xnode tree 構築後に復帰。でないと、html パースでこける - //X.UA.MacIE && alert( body.innerHTML ); + //X_UA.MacIE && alert( body.innerHTML ); // cleanup tree (function/*cleanUpTree*/( elm, skip, head ){ var nodes = X_Object_cloneArray( elm.childNodes ), @@ -157,7 +159,7 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, // ブロック要素直下のスペースだけは削除?? default : //console.log( 'Remove type: ' + node.nodeType + ' value: ' + node.nodeValue ); - if( !X.UA.Opera7 /*&& !X.UA.MacIE */ ){ + if( !X_UA.Opera7 /*&& !X_UA.MacIE */ ){ elm.removeChild( node ); } else { X_TEMP._fixed_remove( node ); @@ -165,13 +167,13 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, //++count; }; }; - })( X.UA.MacIE ? ( copy = body.cloneNode( true ) ) : body ); + })( X_UA.MacIE ? ( copy = body.cloneNode( true ) ) : body ); - if( X.UA.MacIE ){ + if( X_UA.MacIE ){ document.write( html = copy.innerHTML ); } else { // body の属性値の取得 - if( X.UA.IE5678 ){ + if( X_UA.IE5678 ){ html = body.innerHTML.split( X_String_CRLF ).join( '' ); // 不要な改行が入る } else { html = body.innerHTML; @@ -311,6 +313,8 @@ X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){ delete X_TEMP.bindElementToXnode; delete X_TEMP.X_Dom_useBuilder; delete X_TEMP._isCleanupTarget; + + X_HTMLParser_skipFixNesting = false; }; X_TEMP.bindElementToXnode = @@ -330,7 +334,7 @@ X_TEMP.bindElementToXnode = elm = elems[ current.j ]; tag = elm.tagName && elm.tagName.toUpperCase(); if( ( elm.nodeType !== 1 && elm.nodeType !== 3 ) || tag === '!' || ( tag && tag.charAt( 0 ) === '/' ) ){ - if( !X.UA.Opera7 && !X.UA.MacIE ){ + if( !X_UA.Opera7 && !X_UA.MacIE ){ elm.parentNode.removeChild( elm ); } else { X_TEMP._fixed_remove( elm ); @@ -342,7 +346,7 @@ X_TEMP.bindElementToXnode = if( elm.nodeType === 3 ){ if( !( text = elm.data ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){ //alert( text.charCodeAt( 0 ) ); - if( !X.UA.Opera7 && !X.UA.MacIE ){ + if( !X_UA.Opera7 && !X_UA.MacIE ){ elm.parentNode.removeChild( elm ); } else { X_TEMP._fixed_remove( elm ); @@ -364,7 +368,7 @@ X_TEMP.bindElementToXnode = xnode._tag = tag; //}; xnode._root = parent._root; - xnode._dirty = 0; + xnode._flags &= X_Node_DIRTY_MASK_RESET; elm.UID = xnode._uid; current.xtext = null; @@ -415,7 +419,7 @@ X_TEMP.bindElementToXnode = ++current.j; xnode._rawObject = elm; - xnode._dirty = 0; + xnode._flags &= X_Node_DIRTY_MASK_RESET; xnode._text = elm.data; // 正確 xnode._root = parent._root; if( !skipCleanup ){ @@ -497,7 +501,7 @@ X_TEMP.bindElementToXnode = ++current.j; xnode._rawObject = elm; - xnode._dirty = 0; + xnode._flags &= X_Node_DIRTY_MASK_RESET; xnode._root = parent._root; //xnode._tag = X_Dom_DTD_TAG_FIX[ tag ] || tag; if( X_TEMP._isCleanupTarget( elm ) ){ //!xnode.hasClass( 'skip-cleanup' ) && ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){ @@ -541,7 +545,7 @@ X_TEMP.bindElementToXnode = }; // textNode がある - ( current.flag & 6 ) && ( parent._dirty |= X_Node_Dirty.IE4_TEXTNODE_FIX ); + ( current.flag & 6 ) && ( parent._flags |= X_Node_State.IE4_TEXTNODE_FIX ); }); console.log( 'X.Dom.Builder' );