( 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
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
// ブロック要素直下のスペースだけは削除??\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
- var xnodes = Node._body._xnodes = [], t;\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
\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
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 = 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
//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
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
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