X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2Fdom%2F11_XDomNode.js;h=bc48a70f83e821d451ff6b6d4ebbc4f68b6d3bda;hb=4e5a06c9c610f8d3777f9d2eef71ec1365ffff1b;hp=589db7680bfa7dd8e4e9e2b7eaf4a1737374d5ac;hpb=3ea89dc15652e57974d2037e55adf97e6ee19d45;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/dom/11_XDomNode.js b/0.6.x/js/dom/11_XDomNode.js index 589db76..bc48a70 100644 --- a/0.6.x/js/dom/11_XDomNode.js +++ b/0.6.x/js/dom/11_XDomNode.js @@ -1,4 +1,3 @@ - X.Dom.Dirty = { CLEAN : 0, CHILD_IS_DIRTY : 1, @@ -7,13 +6,11 @@ X.Dom.Dirty = { CLASSNAME : 8, // _getCharSize, width, height, x, y ATTR : 16, // _getCharSize, width, height, x, y CSS : 32, // _getCharSize, width, height, x, y - IE_FILTER : X.UA.IE && X.UA.IE < 9 ? 64 : 0, + IE_FILTER : X.UA.IE && X.UA.IE < 9 && !X.UA.MacIE ? 64 : 0, UNKNOWN_TAG_FIX : 128, IE4_TEXTNODE_FIX : 256 }; -ie55 = 7; - X.Dom.State = { DESTROYED : 0, EXIST : 1, @@ -28,13 +25,17 @@ X.Dom.State = { HAS_HEIGHT_LENGTH : 512, HAS_HEIGHT_PERCENT : 1024, IE4_ONLY_TEXT : 2048, - IE5_DISPLAY_NONE_FIX : 5 <= X.UA.IE && X.UA.IE < ie55 ? 4096 : 0 + IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && 5 <= X.UA.IE && X.UA.IE < 5.5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ? }; +X.Dom._strictElmCreation = !X.UA.MacIE && X.UA.IE5678;// && !X.UA.MacIE; + +X.Dom._useDocumentFragment = document.createDocumentFragment && ( !X.UA.IE || 5.5 <= X.UA.IE ) && document.createDocumentFragment(); + /* * Node( rawElement | rawTextnode | htmlString | textString ) */ -//;(function( window, document, undeifned ){ + X.Dom.Node = X.EventDispatcher.inherits( 'XDomNode', X.Class.POOL_OBJECT, @@ -58,11 +59,13 @@ X.Dom.Node = X.EventDispatcher.inherits( _attrs : null, // X.Dom.Attr _newAttrs : null, - _attrText : '', + _attrText : '', // X.Dom.Attr.objToAttrText が必要な場合は false が入っている _css : null, // X.Dom.Style _cssText : null, + _fontSize : 0, + _anime : null, Constructor : function( v ){ @@ -70,11 +73,11 @@ X.Dom.Node = X.EventDispatcher.inherits( if( Node._newByTag ){ Node._newByTag = false; - this._tag = v; + this._tag = v.toUpperCase(); this._xnodeType = 1; this._state = X.Dom.State.DISPLAY_INLINE; // todo arguments[ 1 ] && this.attr( arguments[ 1 ] ); - css = arguments[ 2 ]; + css = arguments[ 2 ] || arguments[ 1 ]; css && this[ X.Type.isString( css ) ? 'cssText' : 'css' ]( css ); } else if( Node._newByText ){ @@ -99,14 +102,14 @@ X.Dom.Node = X.EventDispatcher.inherits( this._rawNode = v; this._xnodeType = 1; this._state = X.Dom.State.DISPLAY_BLOCK; // todo - this._tag = v.tagName; + this._tag = v.tagName.toUpperCase(); this._id = v.id; this._className = v.className; this.cssText( v.style.cssText ); // X.Dom.Dirty.CSS を落とす this._dirty = 0; // attr の回収は不可能、、、 - if( X.UA.IE && X.UA.IE < 5 ){ + if( X.Dom.DOM_IE4 ){ v.setAttribute( 'UID', '' + uid ); } else { v.UID = uid; @@ -129,9 +132,15 @@ X.Dom.Node = X.EventDispatcher.inherits( if( xnodes.length ) return xnodes[ 0 ]; return Node.none; case Node.IS_IMAGE : - v.UID = uid; + if( xnode = Node._getXNode( v ) ) return xnode; + this._rawNode = v; + this._xnodeType = 4; + v.UID = uid; + this._state = X.Dom.State.EXIST; + break; case Node.IS_WINDOW : case Node.IS_DOCUMENT : + if( xnode = Node._getXNode( v ) ) return xnode; this._rawNode = v; this._xnodeType = 2; this._state = X.Dom.State.DISPLAY_BLOCK; @@ -160,14 +169,17 @@ Node.IS_WINDOW = 8; Node.IS_DOCUMENT = 9; Node.IS_IMAGE = 10; -Node._useDocumentFragment = document.createDocumentFragment && ( !X.UA.IE || 6 <= X.UA.IE ) && document.createDocumentFragment(); - Node._getType = function( v ){ if( v === '' ) return Node.IS_STRING; if( !v ) return 0; if( v === window ) return Node.IS_WINDOW; if( v === document ) return Node.IS_DOCUMENT; if( v.constructor === window.Image ) return Node.IS_IMAGE; + if( X.UA.Safari && X.UA.Safari < 3 ){ + if( v.src !== undefined && v.onload !== undefined && X.Type.isNumber( v.height ) && X.Type.isNumber( v.width ) && X.Type.isBoolean( v.complete ) ){ + return Node.IS_IMAGE; + }; + }; if( v.constructor === Node ) return Node.IS_XNODE; if( v.constructor === X.Dom.NodeList ) return Node.IS_XNODE_LIST; if( v.tagName ) return Node.IS_RAW_HTML; @@ -187,7 +199,7 @@ Node._getXNode = function( v ){ case Node.IS_RAW_HTML : case Node.IS_IMAGE : // fake TextNode too. - if( X.UA.IE && X.UA.IE < 5 ){ + if( X.Dom.DOM_IE4 ){ uid = v.getAttribute( 'UID' ); return uid && Node._chashe[ uid ]; }; @@ -197,6 +209,7 @@ Node._getXNode = function( v ){ case Node.IS_DOCUMENT : return Node._document; case Node.IS_RAW_TEXT : + if( v.UID ) return Node._chashe[ v.UID ]; for( chashe = Node._chashe, i = chashe.length; i; ){ if( ( xnode = Node._chashe[ --i ] ) && ( xnode._rawNode === v ) ) return xnode; }; @@ -226,14 +239,15 @@ Node.createText = function( text ){ Node.getRoot = function( xnode ){ return Node._document; - //return xnode.root._rawNode.documentElement ? node : node.ownerDocument || node.document; + //return xNode._body._rawNode.documentElement ? node : node.ownerDocument || node.document; }; // XMLかどうかを判別する Node.isXmlDocument = - X.UA.IE && X.UA.IE < 5 ? + X.Dom.DOM_IE4 ? X.emptyFunction : (function( root ){ - return root._rawNode.createElement( 'p' ).tagName !== root._rawNode.createElement( 'P' ).tagName; + if( X.Type.isBoolean( root.isXML ) ) return root.isXML; + return root.isXML = root._rawNode.createElement( 'p' ).tagName !== root._rawNode.createElement( 'P' ).tagName; }); Node._chashe = []; @@ -241,12 +255,12 @@ Node.none = Node._chashe[ 0 ] = new Node(); Node._window = new Node( window ); // Node._chashe[ 1 ] Node._document = new Node( document ); // Node._chashe[ 2 ] Node._html = null; // Node._chashe[ 3 ] -Node.root = null;// = Node._chashe[ 4 ] body +Node._body = null;// = Node._chashe[ 4 ] body Node._systemNode = null;// = Node._chashe[ ? ] Node._reserveRemoval = []; -if( !document.getElementById && document.all ){ +if( X.Dom.DOM_IE4 ){ Node.prototype._ie4getRawNode = function(){ var elm = this._rawNode; return elm || @@ -349,10 +363,10 @@ Node.prototype.append = function( v ){ if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this; // 親の xnodes から v を消す if( v.parent ){ - //if( document.getElementById ){ + //if( X.Dom.DOM_W3C ){ // v.parent._xnodes.splice( v.parent._xnodes.indexOf( v ), 1 ); //} else - //if( document.all ){ + //if( X.Dom.DOM_IE4 ){ v.remove(); //} else { @@ -413,10 +427,10 @@ Node.prototype.appendAt = function( start, v ){ if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this; // 親の xnodes から v を消す if( v.parent ){ - //if( document.getElementById ){ + //if( X.Dom.DOM_W3C ){ // v.parent._xnodes.splice( v.parent._xnodes.indexOf( v ), 1 ); //} else - //if( document.all ){ + //if( X.Dom.DOM_IE4 ){ v.remove(); //} else { @@ -455,7 +469,7 @@ Node.prototype.appendTo = function( parent, opt_index ){ }; Node.prototype.appendToRoot = function( opt_index ){ - opt_index === undefined ? Node.root.append( this ) : Node.root.appendAt( opt_index, this ); + opt_index === undefined ? Node._body.append( this ) : Node._body.appendAt( opt_index, this ); return this; }; @@ -739,7 +753,7 @@ Node.prototype.html = function( html ){ '<', this._tag, this._id ? ' id="' + this._id + q : _, this._className ? ' class="' + this._className + q : _, - this._attrText || ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ), + this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText, this._cssText ? ' style="' + this._cssText + q : _, '>' ]; @@ -752,7 +766,7 @@ Node.prototype.html = function( html ){ }; if( Node._outerFlag === this ) Node._outerFlag = null; }; - !Node._outerFlag || X.Dom.DTD.EMPTY[ this._tag.toLowerCase() ] || ( html[ n ] = '<\/' + this._tag + '>' ); + !Node._outerFlag || X.Dom.DTD.EMPTY[ this._tag ] || ( html[ n ] = '<\/' + this._tag + '>' ); return html.join( _ ); }; @@ -807,7 +821,7 @@ Node.prototype.each = function( func ){ */ Node.prototype._reserveUpdate = function(){ - var root = Node.root; + var root = Node._body; if( root && !root._updateTimerID ) root._updateTimerID = X.Timer.requestFrame( root, root._startUpdate ); }; @@ -822,31 +836,37 @@ Node.prototype._startUpdate = function(){ } else { return; }; - - X.Dom._listeners && X.Dom._listeners[ X.Dom.Event.BEFORE_UPDATE ] && X.Dom.dispatch( { type : X.Dom.Event.BEFORE_UPDATE } ); + // このイベントでサイズを取ると無限ループに + // X.Dom._listeners && X.Dom._listeners[ X.Dom.Event.BEFORE_UPDATE ] && X.Dom.dispatch( { type : X.Dom.Event.BEFORE_UPDATE } ); removal = Node._reserveRemoval; tmp = this._rawNode.style.visibility; //this._rawNode.style.visibility = 'hidden'; - + + //console.log( '_actualRemove().' ); + if( i = removal.length ){ for( ; i; ){ xnode = removal[ --i ]; xnode._actualRemove(); !this._state && xnode.kill(); }; - removal.length = 0; + removal.length = 0; }; - + + console.log( 'start _startUpdate().' ); + Node._html._dirty ? Node._html._commitUpdate() : this._commitUpdate(); - X.Dom._listeners && X.Dom._listeners[ X.Dom.Event.AFTER_UPDATE ] && X.Dom.dispatch( { type : X.Dom.Event.AFTER_UPDATE } ); + //console.log( 'end of _startUpdate().' ); + + X.Dom._listeners && X.Dom._listeners[ X.Dom.Event.AFTER_UPDATE ] && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.AFTER_UPDATE } ); //this._rawNode.style.visibility = tmp; }; Node.prototype._commitUpdate = - document.getElementById ? + X.Dom.DOM_W3C ? ( function( parentElement, nextElement ){ var elm = this._rawNode, xnodes, l, i, frg, next, k, v; @@ -867,7 +887,7 @@ Node.prototype._commitUpdate = } else if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ) { - /*if( elm.childNodes.length !== l && ( frg = Node._useDocumentFragment ) ){ + /*if( elm.childNodes.length !== l && ( frg = X.Dom._useDocumentFragment ) ){ for( i = 0; i < l; ++i ){ frg.appendChild( xnodes[ i ]._actualCreate( true ) ); }; @@ -882,13 +902,14 @@ Node.prototype._commitUpdate = //}; }; + delete this._fontSize; this._dirty && this._updateRawNode( elm ); if( this._state & X.Dom.State.IE5_DISPLAY_NONE_FIX ){ return nextElement; }; return elm; }) : - document.all ? + X.Dom.DOM_IE4 ? ( function( parentElement, prevElement ){ var elm = this._rawNode || this._ie4getRawNode(), xnodes, l, i, html, text, prev; @@ -928,13 +949,15 @@ Node.prototype._commitUpdate = prev = xnodes[ i ]._commitUpdate( elm, prev ); }; }; + + delete this._fontSize; this._dirty && this._updateRawNode( elm ); return elm; }) : (function(){}); Node.prototype._updateRawNode = - document.getElementById ? + X.Dom.DOM_W3C ? ( function( elm ){ var attrs, rename, k, v; @@ -946,32 +969,25 @@ Node.prototype._updateRawNode = }; // id if( this._dirty & X.Dom.Dirty.ID ){ - //if( X.UA.IE && X.UA.IE < 7 ){ - this._id ? ( elm.id = this._id ) : ( elm.id && elm.removeAttribute( 'id' ) ); - //} else { - // this._id ? ( elm.id = this._id ) : elm.removeAttribute( 'id' ); - //}; + this._id ? ( elm.id = this._id ) : ( elm.id && elm.removeAttribute( 'id' ) ); }; // className if( this._dirty & X.Dom.Dirty.CLASSNAME ){ - //if( X.UA.IE && X.UA.IE < 8 ){ - //elm.className = this._className; + this._className ? ( elm.className = this._className ) : ( elm.className && elm.removeAttribute( X.UA.IE ? 'className' : 'class' ) ); - //} else { - this._className ? ( elm.className = this._className ) : ( elm.className && elm.removeAttribute( 'class' ) ); - //}; - // ie5 only - if( X.Dom.State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){ - this._actualRemove(); - this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX; - return; - }; + // ie5 only + if( X.Dom.State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){ + this._actualRemove(); + this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX; + return; + }; }; // style if( this._dirty & X.Dom.Dirty.CSS ){ - if( this._cssText || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){ - elm.style.cssText = this._cssText; - //elm.setAttribute( 'style', this._cssText ); + if( this._cssText !== null || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){ + X.UA.Opera78 || X.UA.NN6 ? + elm.setAttribute( 'style', this._cssText ) : // opera8用 + ( elm.style.cssText = this._cssText ); } else { elm.style.cssText = ''; // IE5.5以下 Safari3.2 で必要 elm.removeAttribute( 'style' ); @@ -987,7 +1003,7 @@ Node.prototype._updateRawNode = if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){ rename = X.Dom.Attr.renameForDOM; for( k in attrs ){ - if( 5 <= X.UA.IE && X.UA.IE < 6 ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので + if( !X.UA.MacIE && 5 <= X.UA.IE && X.UA.IE < 6 ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので if( this._tag === 'TEXTAREA' && k === 'value' ){ elm.firstChild ? ( elm.firstChild.data = attrs[ k ] ) : @@ -995,16 +1011,18 @@ Node.prototype._updateRawNode = continue; }; }; + k = ( v = attrs[ k ] ) === undefined ? elm.removeAttribute( rename[ k ] || k ) : - ( elm[ rename[ k ] || k ] = v ); + ( elm[ rename[ k ] || k ] = X.Dom.Attr.noValue[ k ] ? k : v ); + }; delete this._newAttrs; }; delete this._dirty; }) : - document.all ? + X.Dom.DOM_IE4 ? ( function( elm ){ var attrs, rename, k, v; @@ -1028,7 +1046,7 @@ Node.prototype._updateRawNode = }; // style if( this._dirty & X.Dom.Dirty.CSS ){ - if( this._cssText || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){ + if( this._cssText !== null || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){ elm.style.cssText = this._cssText; } else { elm.style.cssText = ''; @@ -1047,7 +1065,7 @@ Node.prototype._updateRawNode = for( k in attrs ){ ( v = attrs[ k ] ) === undefined ? elm.removeAttribute( rename[ k ] || k ) : - elm.setAttribute( rename[ k ] || k, v ); + elm.setAttribute( rename[ k ] || k, v ); // TODO X.Dom.Attr.noValue }; delete this._newAttrs; }; @@ -1067,14 +1085,14 @@ Node.prototype._updateRawNode = * ie7 以下では iframe の frameborder や、input name は、createElement 後に setAttribute しても無視される * * fragument がある場合 children も足して - * Mozilla: 1.0+, IE: 6.0+, Netscape: 2.0+, Safari: 1.0+, Opera: 7.0+ + * Mozilla: 1.0+, IE: 5.5+, Netscape: 2.0+, Safari: 1.0+, Opera: 7.0+ * ie6 大丈夫?fragment の場合リークしないか?チェックが必要 * http://msdn.microsoft.com/ja-jp/library/bb250448%28v=vs.85%29.aspx * * document.createElement of ie4 is only for OPTION & IMAGE. */ Node.prototype._actualCreate = - document.getElementById ? (function( isChild ){ + X.Dom.DOM_W3C ? (function( isChild ){ var elm = this._rawNode, xnodes, frg, i, l; @@ -1090,20 +1108,20 @@ Node.prototype._actualCreate = }; this._isNew = true; this._rawNode = elm = - ie55 <= X.UA.IE && X.UA.IE < 9 ? + X.Dom._strictElmCreation ? document.createElement( [ '<', this._tag, ' UID="', this._uid, '"', this._id ? ' id="' + this._id + '"' : '', this._className ? ' class="' + this._className + '"' : '', - this._attrText || ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ), + this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText, this._cssText ? ' style="' + this._cssText + '"' : '', '>' ].join( '' ) ) : document.createElement( this._tag ); }; - if( Node._useDocumentFragment ){ + if( X.Dom._useDocumentFragment ){ if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){ - !isChild && ( frg = Node._useDocumentFragment ).appendChild( elm ); + !isChild && ( frg = X.Dom._useDocumentFragment ).appendChild( elm ); for( i = 0; i < l; ++i ){ elm.appendChild( xnodes[ i ]._actualCreate( true ) ); }; @@ -1113,7 +1131,7 @@ Node.prototype._actualCreate = return elm; }) : - document.all ? (function( isChild ){ + X.Dom.DOM_IE4 ? (function( isChild ){ var uid = this._uid, html, xnodes, n, i, l; @@ -1130,7 +1148,7 @@ Node.prototype._actualCreate = html = [ '<', this._tag, ' id=', ( this._id || ( 'ie4uid' + uid ) ), ' UID="', uid, '"', this._className ? ' class="' + this._className + '"' : '', - this._attrText || ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ), + this._attrText === false ? ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ) : this._attrText, this._cssText ? ' style="' + this._cssText + '"' : '', '>' ]; @@ -1148,7 +1166,7 @@ Node.prototype._actualCreate = }; }; }; - X.Dom.DTD.EMPTY[ this._tag.toLowerCase() ] || ( html[ n ] = '<\/' + this._tag + '>' ); + X.Dom.DTD.EMPTY[ this._tag ] || ( html[ n ] = '<\/' + this._tag + '>' ); delete this._newAttrs; }; @@ -1158,9 +1176,9 @@ Node.prototype._actualCreate = (function(){}); Node.prototype._afterActualCreate = - document.getElementById ? (function(){ + X.Dom.DOM_W3C ? (function(){ var elm = this._rawNode, xnodes, l, attrs, k, i; - + this._root = this.parent._root; if( this._xnodeType === 3 ){ @@ -1172,16 +1190,12 @@ Node.prototype._afterActualCreate = l = xnodes && xnodes.length; if( this._isNew ){ - if( !Node._useDocumentFragment && l ){// docFrg が使えない場合、doc 追加後に子を追加 + if( !X.Dom._useDocumentFragment && l ){// docFrg が使えない場合、doc 追加後に子を追加 for( i = 0; i < l; ++i ){ elm.appendChild( xnodes[ i ]._actualCreate( true ) ); }; }; - //if( X.UA.IE && X.UA.IE < 5.5 ){ - // this._dirty = X.Dom.Dirty.CSS | X.Dom.Dirty.IE_FILTER; - // this._updateRawNode( elm ); - //} else - if( !X.UA.IE || X.UA.IE < ie55 || 9 <= X.UA.IE ){ + if( !X.Dom._strictElmCreation ){ elm.UID = this._uid; this._newAttrs = this._attrs; this._dirty = X.Dom.Dirty.ID | X.Dom.Dirty.CLASSNAME | X.Dom.Dirty.CSS | X.Dom.Dirty.ATTR | X.Dom.Dirty.IE_FILTER; @@ -1202,10 +1216,11 @@ Node.prototype._afterActualCreate = xnodes[ i ]._afterActualCreate(); }; }; - + // src の onload があるので先ではないか? + // ie の str から要素を作る場合、srcだけ イベント設定後ではないか? this._restoreEvent();// イベントの復帰 }) : - document.all ? (function(){ + X.Dom.DOM_IE4 ? (function(){ var xnodes, i; this._root = this.parent._root; @@ -1226,7 +1241,7 @@ Node.prototype._afterActualCreate = (function(){}); Node.prototype._actualRemove = - document.getElementById ? + X.Dom.DOM_W3C ? ( function( isChild ){ var xnodes = this._xnodes, elm = this._rawNode, @@ -1241,9 +1256,13 @@ Node.prototype._actualRemove = if( !elm ) return; this._xnodeType === 1 && this._migrateEvent();// イベントの退避 // elm.parentNode.tagName for ie7 - !isChild && elm.parentNode && elm.parentNode.tagName && elm.parentNode.removeChild( elm ); + if( !X.UA.MacIE ){ + !isChild && elm.parentNode && elm.parentNode.tagName && elm.parentNode.removeChild( elm ); + } else { + !isChild && elm.parentNode && elm.parentNode.tagName && X.Dom._fixed_remove( elm, this ); + }; }) : - document.all ? + X.Dom.DOM_IE4 ? ( function( isChild ){ var xnodes = this._xnodes, elm = this._rawNode || this._ie4getRawNode(), @@ -1257,16 +1276,15 @@ Node.prototype._actualRemove = if( !elm ) return; this._xnodeType === 1 && this._migrateEvent();// イベントの退避 + if( X.Dom.Attr.HAS_VALUE[ this._tag ] && ( !this._newAttrs || !X.inObject( 'value', this._newAttrs ) ) ){ + this._attrs.value = elm.value; + }; elm.removeAttribute( 'id' ); // ? - document.all[ this._id || ( 'ie4uid' + this._uid ) ] = null; // ? + document.all[ this._id || ( 'ie4uid' + this._uid ) ] = null; // MacIE5 でエラー if( !isChild ) elm.outerHTML = ''; delete this._rawNode; }) : (function(){}); - - -//})( window, document ); - - +console.log( 'X.Dom.Node' );