( 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
//node.data = '';\r
l = X_TEMP._removalTextNodes.length;\r
if( parent ){\r
- //!l && X.Timer.once( 0, X_TEMP._timerRemove );\r
- //X_TEMP._removalTextNodes[ l ] = node;\r
- //var str=[],p;\r
- //for( p in node ){\r
- // str[str.length] = p;\r
- //};\r
- //alert( str.join( ',' ) + parent.innerHTML );\r
- //node.nodeValue = '';\r
- //parent.replaceChild( document.createElement( 'span' ), node );\r
- //var e;\r
- //var f = document.createDocumentFragment();\r
- //f.appendChild( e = document.createElement( 'span' ) );\r
- //f.replaceChild( node, e );\r
- //e.appendChild( f );\r
- //parent.appendChild( e = document.createElement( 'span' ) );\r
- //e.appendChild( node );\r
- //parent.removeChild( e );\r
- //node.parentNode = null;\r
- //document.body.appendChild( node );\r
- //parent.replaceChild( document.createComment( '' ), node );\r
- document.body.appendChild( node );\r
+ /*\r
+ !l && X_Timer_once( 0, X_TEMP._timerRemove );\r
+ X_TEMP._removalTextNodes[ l ] = node;\r
+ var str=[],p;\r
+ for( p in node ){\r
+ str[str.length] = p;\r
+ };\r
+ alert( str.join( ',' ) + parent.innerHTML );\r
+ node.nodeValue = '';\r
+ parent.replaceChild( document.createElement( 'span' ), node );\r
+ var e;\r
+ var f = document.createDocumentFragment();\r
+ f.appendChild( e = document.createElement( 'span' ) );\r
+ f.replaceChild( node, e );\r
+ e.appendChild( f );\r
+ parent.appendChild( e = document.createElement( 'span' ) );\r
+ e.appendChild( node );\r
+ parent.removeChild( e );\r
+ node.parentNode = null;\r
+ X_elmBody.appendChild( node );\r
+ parent.replaceChild( document.createComment( '' ), node ); */\r
+ X_elmBody.appendChild( node );\r
return;\r
- if( parent.parentNode !== document.body ){\r
+ /*\r
+ if( parent.parentNode !== X_elmBody ){\r
var clone = parent.cloneNode( true );\r
for( var i = 0, l = parent.childNodes.length; i < l; ++i ){\r
if( parent.childNodes[ i ] !== node ){\r
parent.parentNode.insertBefore( clone, parent );\r
parent.style.display = 'none';\r
if( xnode ){\r
- xnode.parent.parent._rawObject = clone;\r
+ xnode.parent.parent[ '_rawObject' ] = clone;\r
};\r
} else {\r
// ignore\r
- };\r
+ }; */\r
\r
};\r
//if( !node.ownerDocument ) alert( 'no owner' );\r
};\r
};\r
\r
- //nodes.length && X.Timer.once( 1000, X_TEMP._timerRemove );\r
+ //nodes.length && X_Timer_once( 1000, X_TEMP._timerRemove );\r
};\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
* http://kojs.sukobuto.com/docs/visible-binding\r
* IE6 には、「空の span エレメントに続く空白は無視される」という謎な癖があります。 \r
*/\r
-X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,\r
+\r
+X_TEMP._onPreInit =\r
X_UA_DOM.W3C ?\r
(function(){\r
- var r = Node._body,\r
- body = r._rawObject,\r
+ var r = X_Node_body,\r
+ body = X_elmBody,\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
+ function cleanUpTree( elm, skip ){\r
+ var nodes = X_Array_copy( elm.childNodes ),\r
i = 0,\r
l = nodes.length,\r
node, tag, textNode, content;\r
case 1 :\r
tag = node.tagName.toUpperCase();\r
if( X_Dom_DTD_MOVE_TO_HEAD[ tag ] ){\r
- head = head || document.getElementsByTagName( 'head' )[ 0 ];\r
- head.appendChild( node );\r
+ X_elmHead.appendChild( node );\r
continue;\r
} else\r
if( X_TEMP._isCleanupTarget( node ) ){\r
continue;\r
} else {\r
// pre タグ以下はスペースの置換は行わない\r
- node.childNodes && node.childNodes.length && /*cleanUpTree*/arguments.callee( node, skip || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ], head );\r
+ node.childNodes && node.childNodes.length && cleanUpTree( node, skip || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ] );\r
};\r
textNode = null;\r
break;\r
// ブロック要素直下のスペースだけは削除??\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
//++count;\r
};\r
};\r
- })( X.UA.MacIE ? ( copy = body.cloneNode( true ) ) : body );\r
+ };\r
+\r
+ cleanUpTree( 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[ 'IE' ] <= 8 ){\r
html = body.innerHTML.split( X_String_CRLF ).join( '' ); // 不要な改行が入る\r
} else {\r
html = body.innerHTML;\r
}; \r
};\r
\r
- body.appendChild( elmProgress = document.createElement( 'div' ) );\r
+ body.appendChild( X_TEMP.elmProgress = elmProgress = document.createElement( 'div' ) );\r
elmProgress.style.cssText = 'position:absolute;top:0;left:0;z-index:9999;width:0;height:0.5em;background:#00f;overflow:hidden;';\r
elmProgress.setAttribute( 'style', 'position:absolute;top:0;left:0;z-index:9999;width:0;height:0.5em;background:#00f;overflow:hidden;' );\r
\r
X_HTMLParser_asyncParse( html, true )\r
- .listen( X.Event.PROGRESS,\r
- function(e){\r
- elmProgress.style.width = ( e.percent * 100 | 0 ) + '%';\r
- }\r
- )\r
- .listenOnce( X.Event.SUCCESS, function( e ){\r
- var xnodes = 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
- } );\r
+ [ 'listen' ]( X_EVENT_PROGRESS, X_TEMP._handleEvent )\r
+ [ 'listenOnce' ]( X_EVENT_SUCCESS, X_TEMP._handleEvent );\r
\r
}) :\r
-X_UA_DOM.IE4 ?\r
+// X_UA_DOM.IE4 ?\r
(function(){\r
- var r = Node._body,\r
- body = r._rawObject,\r
+ var r = X_Node_body,\r
+ body = r[ '_rawObject' ],\r
elmProgress = '_xdom_builder_progress',\r
html;\r
\r
- \r
if( !X_TEMP.X_Dom_useBuilder ) return;\r
-\r
+ \r
/*\r
* http://support.microsoft.com/kb/812417/ja\r
* PRB: outerHTML の HTML 要素のプロパティは、既定の属性は表示されません。\r
*/\r
html = body.innerHTML;\r
body.insertAdjacentHTML( 'BeforeEnd', '<div id="' + elmProgress + '" style="position:absolute;top:0;left:0;z-index:9999;width:0;height:0.5em;background:#00f;overflow:hidden;"></div>' );\r
- elmProgress = document.all[ elmProgress ];\r
+ X_TEMP.elmProgress = document.all[ elmProgress ];\r
\r
X_HTMLParser_asyncParse( html, true )\r
- .listen( X.Event.PROGRESS,\r
- function( e ){\r
- elmProgress.style.width = ( e.percent * 100 | 0 ) + '%';\r
- }\r
- )\r
- .listenOnce( X.Event.SUCCESS,\r
- function( e ){\r
- var xnodes = 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
- }\r
- );\r
-}) :\r
-(function(){\r
+ [ 'listen' ]( X_EVENT_PROGRESS, X_TEMP._handleEvent )\r
+ [ 'listenOnce' ]( X_EVENT_SUCCESS, X_TEMP._handleEvent );\r
+});\r
+\r
+X_ViewPort[ 'listenOnce' ]( X_EVENT_PRE_INIT, X_TEMP._onPreInit );\r
+\r
+X_TEMP._handleEvent = function( e ){\r
+ var elmProgress = X_TEMP.elmProgress, xnodes;\r
\r
-}) );\r
+ switch( e.type ){\r
+ case X_EVENT_PROGRESS :\r
+ elmProgress.style.width = ( e.percent * 100 | 0 ) + '%';\r
+ break;\r
+ \r
+ case X_EVENT_SUCCESS :\r
+ xnodes = X_Node_body[ '_xnodes' ] = [];\r
+ \r
+ xnodes.push.apply( xnodes, e.xnodes );\r
+ elmProgress.style.width = '100%';\r
+ \r
+ X_TEMP.asyncCreateTree( X_Node_body, X_elmBody.childNodes || X_elmBody.children, elmProgress );\r
+ \r
+ delete X_TEMP._onPreInit;\r
+ delete X_TEMP.elmProgress;\r
+ break;\r
+ };\r
+};\r
\r
-X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){\r
- var xnodes = async ? 0 : X_Object_cloneArray( parent._xnodes ),\r
+X_TEMP.asyncCreateTree = function( parent, elems, elmProgress, async ){\r
+ var xnodes = async ? 0 : X_Array_copy( parent[ '_xnodes' ] ),\r
l = async ? 0 : xnodes.length,\r
stack = async ? async.stack : [],\r
done = async ? async.done : 0,\r
xnodes : xnodes,\r
l : l,\r
i : 0,\r
- elems : X_Object_cloneArray( elems ),\r
+ elems : X_Array_copy( elems ),\r
j : 0,\r
xtext : null,\r
flag : 0\r
continue;\r
};\r
\r
- if( startTime + 16 <= X_Timer_now() ){\r
+ if( startTime + X_Timer_INTERVAL_TIME <= X_Timer_now() ){\r
current.i = i;\r
if( async ){\r
async.current = i < l && current;\r
async.done = done;\r
};\r
//alert( 'koko?' );\r
- X.Timer.once( 0, X_TEMP.asyncCreateTree, [ null, null, elmProgress, async || { stack : stack, current : i < l && current, done : done } ] );\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
current = null;\r
};\r
// complete\r
- X_ViewPort.asyncDispatch( X_TEMP.SYSTEM_EVENT_XTREE );\r
- elmProgress.parentNode ? elmProgress.parentNode.removeChild( elmProgress ) : ( elmProgress.outerHTML = '' );\r
+ console.log( 'xtree 作成完了' );\r
+ X_ViewPort[ 'asyncDispatch' ]( X_EVENT_XTREE_READY );\r
+ \r
+ if( X_UA[ 'IE' ] < 6 ){\r
+ // IE5.01 でビルド時間が短い時に removeChild を通るとエラー!\r
+ elmProgress.outerHTML = '';\r
+ } else {\r
+ elmProgress.parentNode.removeChild( elmProgress );\r
+ };\r
+ \r
delete X_TEMP.asyncCreateTree;\r
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
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
continue;\r
};\r
\r
- if( xnode._xnodeType === 1 ){\r
+ if( xnode[ '_tag' ] ){\r
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
};\r
continue;\r
};\r
- alert( '1:[' +parent._tag + '>' +xnode._tag + '] !== ' + elm.nodeType + '\n' + ( elm.data ) );\r
+ alert( '1:[' +parent[ '_tag' ] + '>' +xnode[ '_tag' ] + '] !== ' + elm.nodeType + '\n' + ( elm.data ) );\r
} else\r
if( X_Dom_DTD_MOVE_TO_HEAD[ tag ] ){\r
alert( tag );\r
continue;\r
} else\r
- if( xnode._tag !== tag ){\r
- alert( '2:[' +parent._tag + '>' +xnode._tag + ' len:' + (xnode._xnodes ? xnode._xnodes.length : '' ) + '] !== ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + '\n' + elm.outerHTML );\r
+ if( xnode[ '_tag' ] !== tag ){\r
+ alert( '2:[' +parent[ '_tag' ] + '>' +xnode[ '_tag' ] + ' len:' + (xnode[ '_xnodes' ] ? xnode[ '_xnodes' ].length : '' ) + '] !== ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + '\n' + elm.outerHTML );\r
} else {\r
- xnode._rawObject = elm;\r
+ xnode[ '_rawObject' ] = elm;\r
//if( ( doc = elm.ownerDocument || elm.document ) && ( doc.createElement( 'p' ).tagName === doc.createElement( 'P' ).tagName ) ){\r
if( tag.charAt( 0 ) === '/' ) tag = tag.slice( 1 );\r
- xnode._tag = tag;\r
+ xnode[ '_tag' ] = tag;\r
//};\r
- xnode._root = parent._root;\r
- xnode._dirty = 0;\r
- elm.UID = xnode._uid;\r
+ xnode[ '_flags' ] |= X_NodeFlags_IN_TREE;\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
+ elm[ 'UID' ] = xnode[ '_uid' ];\r
current.xtext = null;\r
\r
if( tag === 'TEXTAREA' ){\r
- xnode.attr( 'value', xnode.html() ).empty();\r
+ xnode[ 'attr' ]( 'value', xnode[ 'html' ]() )[ 'empty' ]();\r
\r
} else\r
- //if( X_TEMP._isCleanupTarget( elm ) ){// !xnode.hasClass( 'skip-cleanup' ) && ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){ // ie で body 内の script が2度よばれるのに対処\r
- //alert( '[' +parent._tag + '>' + xnode._tag + '] remove ... ' );\r
- //xnode.destroy();\r
- //} else\r
if( elm.childNodes && elm.childNodes.length ){\r
- //alert( '[' +parent._tag + '>' + xnode._tag + ' ' + (xnode._xnodes ? xnode._xnodes.length : '' ) + '] === ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + ' Hit\n' + elm.outerHTML );\r
+ //alert( '[' +parent[ '_tag' ] + '>' + xnode[ '_tag' ] + ' ' + (xnode[ '_xnodes' ] ? xnode[ '_xnodes' ].length : '' ) + '] === ' + tag + ' ' + (elm.childNodes ? elm.childNodes.length : '' ) + ' Hit\n' + elm.outerHTML );\r
//current.xtext = null;\r
++current.j;\r
\r
return {\r
me : xnode,\r
- xnodes : X_Object_cloneArray( xnode._xnodes ),\r
+ xnodes : X_Array_copy( xnode[ '_xnodes' ] ),\r
xtext : null,\r
flag : 0,\r
i : 0,\r
- l : xnode._xnodes.length,\r
- elems : X_Object_cloneArray( elm.childNodes ),\r
+ l : xnode[ '_xnodes' ].length,\r
+ elems : X_Array_copy( elm.childNodes ),\r
j : 0,\r
skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
};\r
};\r
\r
if( elm.nodeType !== 3 ){\r
- if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
- console.log( '[' +parent._tag + '> UID:' + xnode._uid + ' len:' + xnode._text.length + ' code : ' + xnode._text.charCodeAt( 0 ) + ',' + xnode._text.charCodeAt( 1 ) + '] destroyed.' );\r
- xnode.destroy();\r
+ if( !( text = xnode[ '_text' ] ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
+ console.log( '[' +parent[ '_tag' ] + '> UID:' + xnode[ '_uid' ] + ' len:' + xnode[ '_text' ].length + ' code : ' + xnode[ '_text' ].charCodeAt( 0 ) + ',' + xnode[ '_text' ].charCodeAt( 1 ) + '] destroyed.' );\r
+ xnode[ 'kill' ]();\r
break;\r
};\r
- alert( parent._tag + ' > ' + '"' + xnode._text + '" !== ' + tag + '\n' +\r
- 'prev : ' + ( xnode.prevNode() && xnode.prevNode().html() ) + '\n' +\r
- 'next : ' + ( xnode.nextNode() && xnode.nextNode().html() ) + '\n' +\r
+ alert( parent[ '_tag' ] + ' > ' + '"' + xnode[ '_text' ] + '" !== ' + tag + '\n' +\r
+ 'prev : ' + ( xnode[ 'prev' ]() && xnode[ 'prev' ]()[ 'html' ]() ) + '\n' +\r
+ 'next : ' + ( xnode[ 'next' ]() && xnode[ 'next' ]()[ 'html' ]() ) + '\n' +\r
'html : ' + elm.outerHTML );\r
break;\r
};\r
\r
++current.j;\r
- xnode._rawObject = elm;\r
- xnode._dirty = 0;\r
- xnode._text = elm.data; // 正確\r
- xnode._root = parent._root;\r
+ xnode[ '_rawObject' ] = elm;\r
+ xnode[ '_flags' ] |= X_NodeFlags_IN_TREE;\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
+ xnode[ '_text' ] = elm.data; // 正確\r
+ \r
if( !skipCleanup ){\r
- if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
- console.log( '[' +parent._tag + '>' + xnode._uid + '] destroy ... ' );\r
- xnode.destroy();\r
+ if( !( text = xnode[ '_text' ] ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
+ console.log( '[' +parent[ '_tag' ] + '>' + xnode[ '_uid' ] + '] destroy ... ' );\r
+ xnode[ 'kill' ]();\r
};\r
if( xtext ){\r
- xtext.text( xtext._text + text );\r
- console.log( '[' +parent._tag + '>' + xnode._uid + '] xtext,destroy ... ' );\r
- xnode.destroy();\r
+ xtext[ 'text' ]( xtext[ '_text' ] + text );\r
+ console.log( '[' +parent[ '_tag' ] + '>' + xnode[ '_uid' ] + '] xtext,destroy ... ' );\r
+ xnode[ 'kill' ]();\r
} else {\r
- //alert( parent._tag + '>' + '"' + text + '"\n' + elm.data );\r
- xnode.text( text );\r
+ //alert( parent[ '_tag' ] + '>' + '"' + text + '"\n' + elm.data );\r
+ xnode[ 'text' ]( text );\r
};\r
} else\r
if( xtext ){\r
- xtext.text( xtext._text + xnode._text );\r
- console.log( '[' +parent._tag + '>' + xnode._uid + '] xtext,destroy ... ' );\r
- xnode.destroy();\r
+ xtext[ 'text' ]( xtext[ '_text' ] + xnode[ '_text' ] );\r
+ console.log( '[' +parent[ '_tag' ] + '>' + xnode[ '_uid' ] + '] xtext,destroy ... ' );\r
+ xnode[ 'kill' ]();\r
};\r
current.xtext = xtext || xnode;\r
break;\r
\r
xnode.parent = parent;\r
\r
- if( xnode._xnodeType === 3 ){\r
- //alert( X_String_cleanupWhiteSpace( xnode._text ) );\r
+ if( !xnode[ '_tag' ] ){\r
+ xnode[ '_flags' ] |= X_NodeFlags_IN_TREE;\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\r
+ //alert( X_String_cleanupWhiteSpace( xnode[ '_text' ] ) );\r
if( !skipCleanup ){\r
- if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
- xnode.destroy();\r
+ if( !( text = xnode[ '_text' ] ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
+ xnode[ 'kill' ]();\r
+ xnode = null;\r
} else\r
if( xtext ){\r
//alert( 'xtext ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
- xtext.text( xtext._text + text );\r
- xnode.destroy();\r
+ xtext[ 'text' ]( xtext[ '_text' ] + text );\r
+ xnode[ 'kill' ]();\r
} else {\r
//alert( 'xnode ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
- xnode.text( text );\r
+ xnode[ 'text' ]( text );\r
+ };\r
+ } else {\r
+ if( xtext ){\r
+ //alert( 'skip ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
+ xtext[ 'text' ]( xtext[ '_text' ] + xnode[ '_text' ] );\r
+ xnode[ 'kill' ]();\r
};\r
- } else\r
- if( xtext ){\r
- //alert( 'skip ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
- xtext.text( xtext._text + xnode._text );\r
- xnode.destroy();\r
};\r
- current.flag |= 4;\r
current.xtext = xtext || xnode;\r
- return;\r
- };\r
- \r
- if( xnode._xnodeType !== 1 ){\r
- //alert( xnode._xnodeType )\r
+ parent[ '_flags' ] |= X_NodeFlags_IE4_HAS_TEXTNODE;\r
return;\r
};\r
\r
//alert( '## ' + tag );\r
continue;\r
} else\r
- if( xnode._tag !== tag ){\r
- alert( xnode._tag + ' ' + ' !== ' + tag + '\nxnode.html():' + xnode.attr('cite') + '\nelm.outerHTML:' + elm.outerHTML );\r
+ if( xnode[ '_tag' ] !== tag ){\r
+ alert( xnode[ '_tag' ] + ' ' + ' !== ' + tag + '\nxnode.html():' + xnode.attr('cite') + '\nelm.outerHTML:' + elm.outerHTML );\r
} else {\r
++current.j;\r
\r
- xnode._rawObject = elm;\r
- xnode._dirty = 0;\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
- xnode.destroy();\r
+ xnode[ '_rawObject' ] = elm;\r
+ xnode[ '_flags' ] |= X_NodeFlags_IN_TREE;\r
+ xnode[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;\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
+ xnode[ 'kill' ]();\r
break;\r
};\r
\r
- !xnode._id && elm.setAttribute( 'id', 'ie4uid' + xnode._uid );\r
- elm.setAttribute( 'UID', xnode._uid );\r
+ !xnode[ '_id' ] && elm.setAttribute( 'id', 'ie4uid' + xnode[ '_uid' ] );\r
+ elm.setAttribute( 'UID', xnode[ '_uid' ] );\r
\r
tag === 'INPUT' && (\r
- !xnode._attrs ?\r
- ( xnode._attrs = { type : 'text' } ) :\r
- xnode._attrs.type || ( xnode._attrs.type = 'text' )\r
+ !xnode[ '_attrs' ] ?\r
+ ( xnode[ '_attrs' ] = { type : 'text' } ) :\r
+ xnode[ '_attrs' ].type || ( xnode[ '_attrs' ].type = 'text' )\r
);\r
- current.flag |= 3;\r
+ parent[ '_flags' ] |= X_NodeFlags_IE4_HAS_ELEMENT;\r
current.xtext = null;\r
\r
if( tag === 'TEXTAREA' ){\r
- xnode.attr( 'value', xnode.html() ).empty();\r
+ xnode[ 'attr' ]( 'value', xnode[ 'html' ]() )[ 'empty' ]();\r
} else\r
- if( xnode._xnodes && xnode._xnodes.length ){\r
+ if( xnode[ '_xnodes' ] && xnode[ '_xnodes' ].length ){\r
return {\r
me : xnode,\r
- xnodes : X_Object_cloneArray( xnode._xnodes ),\r
+ xnodes : X_Array_copy( xnode[ '_xnodes' ] ),\r
xtext : null,\r
flag : 0,\r
i : 0,\r
- l : xnode._xnodes.length,\r
- elems : X_Object_cloneArray( elm.children ),\r
+ l : xnode[ '_xnodes' ].length,\r
+ elems : X_Array_copy( elm.children ),\r
j : 0,\r
skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
};\r
};\r
};\r
// for\r
- if( !xnode._rawObject ){\r
- alert( xnode._tag + ' ' + xnode._id + ' !== none...' );\r
+ if( !xnode[ '_rawObject' ] ){\r
+ alert( xnode[ '_tag' ] + ' ' + xnode[ '_id' ] + ' !== none...' );\r
};\r
- \r
- // textNode がある\r
- ( current.flag & 6 ) && ( parent._dirty |= X_Node_Dirty.IE4_TEXTNODE_FIX );\r
});\r
\r
console.log( 'X.Dom.Builder' );\r