X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F02_dom%2F22_XTreeBuilder.js;h=5a205c742081b5c73ab5cf28d462ee681ffeb1a7;hb=604668ba9efa027d4bc77fd8020d6b6be55d03e1;hp=72eae6bda6633a21ec343386b27ec07a863d3c57;hpb=7973f3ff61f1ef5bd9732f527b175010d0c0971b;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 72eae6b..5a205c7 100644 --- a/0.6.x/js/02_dom/22_XTreeBuilder.js +++ b/0.6.x/js/02_dom/22_XTreeBuilder.js @@ -41,11 +41,12 @@ if( X_UA[ 'MacIE' ] ){ e.appendChild( node ); parent.removeChild( e ); node.parentNode = null; - document.body.appendChild( node ); + X_elmBody.appendChild( node ); parent.replaceChild( document.createComment( '' ), node ); */ - document.body.appendChild( node ); + X_elmBody.appendChild( node ); return; - if( parent.parentNode !== document.body ){ + /* + if( parent.parentNode !== X_elmBody ){ var clone = parent.cloneNode( true ); for( var i = 0, l = parent.childNodes.length; i < l; ++i ){ if( parent.childNodes[ i ] !== node ){ @@ -61,7 +62,7 @@ if( X_UA[ 'MacIE' ] ){ }; } else { // ignore - }; + }; */ }; //if( !node.ownerDocument ) alert( 'no owner' ); @@ -111,7 +112,7 @@ X_TEMP._onPreInit = X_UA_DOM.W3C ? (function(){ var r = X_Node_body, - body = r[ '_rawObject' ], + body = X_elmBody, copy, i, l, node, html, elmProgress; @@ -123,7 +124,7 @@ X_TEMP._onPreInit = // textarea の内容を控えて、消す。xnode tree 構築後に復帰。でないと、html パースでこける //X_UA[ 'MacIE' ] && alert( body.innerHTML ); // cleanup tree - function cleanUpTree( elm, skip, head ){ + function cleanUpTree( elm, skip ){ var nodes = X_Array_copy( elm.childNodes ), i = 0, l = nodes.length, @@ -134,8 +135,7 @@ X_TEMP._onPreInit = case 1 : tag = node.tagName.toUpperCase(); if( X_Dom_DTD_MOVE_TO_HEAD[ tag ] ){ - head = head || document.getElementsByTagName( 'head' )[ 0 ]; - head.appendChild( node ); + X_elmHead.appendChild( node ); continue; } else if( X_TEMP._isCleanupTarget( node ) ){ @@ -143,7 +143,7 @@ X_TEMP._onPreInit = continue; } else { // pre タグ以下はスペースの置換は行わない - node.childNodes && node.childNodes.length && cleanUpTree( node, skip || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ], head ); + node.childNodes && node.childNodes.length && cleanUpTree( node, skip || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ] ); }; textNode = null; break; @@ -197,8 +197,6 @@ X_TEMP._onPreInit = elmProgress.style.cssText = 'position:absolute;top:0;left:0;z-index:9999;width:0;height:0.5em;background:#00f;overflow:hidden;'; elmProgress.setAttribute( 'style', 'position:absolute;top:0;left:0;z-index:9999;width:0;height:0.5em;background:#00f;overflow:hidden;' ); - X_TEMP._body = body; - X_HTMLParser_asyncParse( html, true ) [ 'listen' ]( X_EVENT_PROGRESS, X_TEMP._handleEvent ) [ 'listenOnce' ]( X_EVENT_SUCCESS, X_TEMP._handleEvent ); @@ -223,8 +221,6 @@ X_TEMP._onPreInit = body.insertAdjacentHTML( 'BeforeEnd', '
' ); X_TEMP.elmProgress = document.all[ elmProgress ]; - X_TEMP._body = body; - X_HTMLParser_asyncParse( html, true ) [ 'listen' ]( X_EVENT_PROGRESS, X_TEMP._handleEvent ) [ 'listenOnce' ]( X_EVENT_SUCCESS, X_TEMP._handleEvent ); @@ -246,10 +242,9 @@ X_TEMP._handleEvent = function( e ){ xnodes.push.apply( xnodes, e.xnodes ); elmProgress.style.width = '100%'; - X_TEMP.asyncCreateTree( X_Node_body, X_TEMP._body.childNodes || X_TEMP._body.children, elmProgress ); + X_TEMP.asyncCreateTree( X_Node_body, X_elmBody.childNodes || X_elmBody.children, elmProgress ); delete X_TEMP._onPreInit; - delete X_TEMP._body; delete X_TEMP.elmProgress; break; }; @@ -297,7 +292,7 @@ X_TEMP.asyncCreateTree = function( parent, elems, elmProgress, async ){ continue; }; - if( startTime + 16 <= X_Timer_now() ){ + if( startTime + X_Timer_INTERVAL_TIME <= X_Timer_now() ){ current.i = i; if( async ){ async.current = i < l && current; @@ -316,7 +311,13 @@ X_TEMP.asyncCreateTree = function( parent, elems, elmProgress, async ){ // complete console.log( 'xtree 作成完了' ); X_ViewPort[ 'asyncDispatch' ]( X_EVENT_XTREE_READY ); - elmProgress.parentNode ? elmProgress.parentNode.removeChild( elmProgress ) : ( elmProgress.outerHTML = '' ); + + if( X_UA[ 'IE' ] < 6 ){ + // IE5.01 でビルド時間が短い時に removeChild を通るとエラー! + elmProgress.outerHTML = ''; + } else { + elmProgress.parentNode.removeChild( elmProgress ); + }; delete X_TEMP.asyncCreateTree; delete X_TEMP.bindElementToXnode;