( 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
};\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
\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
// ブロック要素直下のスペースだけは削除??\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
+ })( 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
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
+ .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
+ .listenOnce( X_Event.SUCCESS, function( e ){\r
var xnodes = X_Node_body._xnodes = [], t;\r
xnodes.push.apply( xnodes, e.xnodes );\r
elmProgress.style.width = '100%';\r
elmProgress = document.all[ elmProgress ];\r
\r
X_HTMLParser_asyncParse( html, true )\r
- .listen( X.Event.PROGRESS,\r
+ .listen( X_Event.PROGRESS,\r
function( e ){\r
elmProgress.style.width = ( e.percent * 100 | 0 ) + '%';\r
}\r
)\r
- .listenOnce( X.Event.SUCCESS,\r
+ .listenOnce( X_Event.SUCCESS,\r
function( e ){\r
var xnodes = X_Node_body._xnodes = [], t;\r
xnodes.push.apply( xnodes, e.xnodes );\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
if( tag.charAt( 0 ) === '/' ) tag = tag.slice( 1 );\r
xnode._tag = tag;\r
//};\r
- xnode._root = parent._root;\r
- xnode._dirty = 0;\r
+ xnode._flags |= X_Node_State.IN_TREE;\r
+ xnode._flags &= X_Node_BitMask_RESET_DIRTY;\r
elm.UID = xnode._uid;\r
current.xtext = null;\r
\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
//current.xtext = null;\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
+ '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._flags |= X_Node_State.IN_TREE;\r
+ xnode._flags &= X_Node_BitMask_RESET_DIRTY;\r
xnode._text = elm.data; // 正確\r
- xnode._root = parent._root;\r
+ \r
if( !skipCleanup ){\r
if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
console.log( '[' +parent._tag + '>' + xnode._uid + '] destroy ... ' );\r
\r
xnode.parent = parent;\r
\r
- if( xnode._xnodeType === 3 ){\r
+ if( !xnode._tag ){\r
+ xnode._flags |= X_Node_State.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
+ xnode = null;\r
} else\r
if( xtext ){\r
//alert( 'xtext ' + text.charCodeAt( 0 ) + ' : ' + text.length );\r
//alert( 'xnode ' + text.charCodeAt( 0 ) + ' : ' + text.length );\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.destroy();\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
};\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_Node_State.IE4_HAS_TEXTNODE;\r
return;\r
};\r
\r
++current.j;\r
\r
xnode._rawObject = elm;\r
- xnode._dirty = 0;\r
- xnode._root = parent._root;\r
+ xnode._flags |= X_Node_State.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.destroy();\r
( xnode._attrs = { type : 'text' } ) :\r
xnode._attrs.type || ( xnode._attrs.type = 'text' )\r
);\r
- current.flag |= 3;\r
+ parent._flags |= X_Node_State.IE4_HAS_ELEMENT;\r
current.xtext = null;\r
\r
if( tag === 'TEXTAREA' ){\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