* 完全にワンページアプリで<body/>が空な場合、このコードはビルドに含める必要はない\r
*/\r
X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT,\r
- document.getElementById ?\r
+ X.Dom.DOM_W3C ?\r
(function(){\r
var r = Node.root,\r
body = r._rawNode,\r
- i, n = 0;\r
+ i, n = 0,\r
+ elmProgress;\r
\r
// cleanup tree \r
(function( elm, skip, head ){\r
} );\r
\r
}) :\r
-document.all ?\r
+X.Dom.DOM_IE4 ?\r
(function(){\r
var r = Node.root,\r
body = r._rawNode,\r
xnodes = current.xnodes;\r
while( xnode = xnodes[ i ] ){ \r
//\r
- dive = bindElementToXnode( parent, xnode, current );\r
+ dive = X.Dom._bindElementToXnode( parent, xnode, current );\r
\r
++i;\r
++done;\r
X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_BUILDER_COMPLETE } );\r
elmProgress.parentNode ? elmProgress.parentNode.removeChild( elmProgress ) : ( elmProgress.outerHTML = '' );\r
delete X.Dom._asyncCreateTree;\r
+ delete X.Dom._bindElementToXnode;\r
};\r
\r
-bindElementToXnode =\r
- document.getElementById ?\r
+X.Dom._bindElementToXnode =\r
+ X.Dom.DOM_W3C ?\r
(function( parent, xnode, current ){\r
var elems = current.elems,\r
//j = current.j,\r
xnode.attr( 'value', xnode.html() ).empty();\r
current.xtext = null;\r
} else\r
- if( 0 <= X.Dom.cleanupTagNames.indexOf( tag.toLowerCase() ) || tag === 'SCRIPT' ){ // ie で body 内の script が2度よばれるのに対処\r
+ if( !xnode.hasClass( 'skip-cleanup' ) && ( X.Dom.cleanupTagNames[ tag.toLowerCase() ] || tag === 'SCRIPT' || xnode.hasClass( 'cleanup-target' ) ) ){ // ie で body 内の script が2度よばれるのに対処\r
//alert( '[' +parent._tag + '>' + xnode._tag + '] remove ... ' );\r
xnode.destroy();\r
} else\r
xnode._rawNode = elm;\r
xnode._root = parent._root;\r
//xnode._tag = X.Dom.DTD.TAG_FIX[ tag ] || tag;\r
- if( 0 <= X.Dom.cleanupTagNames.indexOf( tag.toLowerCase() ) || tag === 'SCRIPT' ){\r
+ if( !xnode.hasClass( 'skip-cleanup' ) && ( X.Dom.cleanupTagNames[ tag.toLowerCase() ] || tag === 'SCRIPT' || xnode.hasClass( 'cleanup-target' ) ) ){\r
xnode.destroy();\r
break;\r
};\r