CLASSNAME : 4, // _getCharSize, width, height, x, y\r
CSS : 8, // _getCharSize, width, height, x, y\r
ATTR : 16, // _getCharSize, width, height, x, y\r
- IE4_TEXTNODE_FIX : 32\r
+ IE_FILTER : X.UA.IE && X.UA.IE < 9 ? 32 : 0,\r
+ IE4_TEXTNODE_FIX : 64\r
};\r
\r
/*\r
this._className = v.className;\r
this.cssText( v.style.cssText );\r
// X.Dom.Dirty.CSS を落とす\r
- this._dirty &= ~X.Dom.Dirty.CSS;\r
this._dirty = 0;\r
// attr の回収は不可能、、、\r
if( X.UA.IE && X.UA.IE < 5 ){\r
xnodes = this._xnodes;\r
l = xnodes ? xnodes.length : 0;\r
\r
- if( this._dirty & X.Dom.Dirty.IE4_TEXTNODE_FIX || ( this._state & X.Dom.State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){\r
+ if( this._dirty & X.Dom.Dirty.IE4_TEXTNODE_FIX || ( this._state & X.Dom.State.IE4_ONLY_TEXT && ( l !== 1 || xnodes[ 0 ]._xnodeType !== 3 ) ) ){ // 1 < l && elm.children.length === 0\r
html = [];\r
for( i = 0; i < l; ++i ){\r
html[ i ] = xnodes[ i ]._actualCreate();\r
}) :\r
(function(){});\r
\r
-\r
Node.prototype._updateRawNode =\r
document.getElementById ?\r
( function( elm ){\r
- var attrs, k, v;\r
+ var attrs, rename, k, v;\r
\r
// textNode\r
if( this._dirty & X.Dom.Dirty.CONTENT ){\r
delete this._cssText;\r
};\r
};\r
+ \r
+ if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+ this._rawNode.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
+ };\r
+ \r
// attr\r
if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
+ rename = X.Dom.Attr.renameForDOM;\r
for( k in attrs ){\r
( v = attrs[ k ] ) === undefined ?\r
- elm.removeAttribute( k ) :\r
- ( elm[ k ] = v );\r
+ elm.removeAttribute( rename[ k ] || k ) :\r
+ ( elm[ rename[ k ] || k ] = v );\r
};\r
delete this._newAttrs;\r
};\r
}) :\r
document.all ? \r
( function( elm ){\r
- var attrs, k, v;\r
+ var attrs, rename, k, v;\r
\r
// fake textNode\r
if( this._dirty & X.Dom.Dirty.CONTENT ){\r
- elm.innerHTML = this._text;\r
+ elm.innerText = this._text;\r
delete this._dirty;\r
return;\r
};\r
- \r
+ \r
+ /*\r
+ * http://www.tohoho-web.com/js/element.htm\r
+ * title、className、id、lang、language には setAttribute でなく、element.id で直接読み書きできる\r
+ */ \r
// id\r
- if( this._dirty & X.Dom.Dirty.CONTENT ) elm.setAttribute( 'id', this._id );\r
+ if( this._dirty & X.Dom.Dirty.CONTENT ) elm.setAttribute( 'id', this._id || ( 'ie4uid' + xnode._uid ) );\r
+\r
// className\r
if( this._dirty & X.Dom.Dirty.CLASSNAME ) elm.className = this._className;\r
// style\r
delete this._cssText;\r
};\r
};\r
+ \r
+ if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+ this._rawNode.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
+ };\r
+ \r
// attr\r
if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
+ rename = X.Dom.Attr.renameForDOM;\r
for( k in attrs ){\r
( v = attrs[ k ] ) === undefined ?\r
- elm.removeAttribute( k ) :\r
- elm.setAttribute( k, v );\r
- delete attrs[ k ];\r
+ elm.removeAttribute( rename[ k ] || k ) :\r
+ elm.setAttribute( rename[ k ] || k, v );\r
};\r
delete this._newAttrs;\r
};\r
\r
delete this._newAttrs;\r
};\r
- delete this._dirty;\r
\r
return html.join( '' );\r
}) :\r
if( !X.UA.IE || 8 < X.UA.IE ){\r
elm.UID = this._uid;\r
this._newAttrs = this._attrs;\r
- this._dirty = X.Dom.Dirty.ID | X.Dom.Dirty.CLASSNAME | X.Dom.Dirty.CSS | X.Dom.Dirty.ATTR;\r
+ this._dirty = X.Dom.Dirty.ID | X.Dom.Dirty.CLASSNAME | X.Dom.Dirty.CSS | X.Dom.Dirty.ATTR | X.Dom.Dirty.IE_FILTER;\r
this._updateRawNode( elm );\r
+ } else\r
+ if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+ elm.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
+ delete this._dirty;\r
};\r
this._restoreEvent();// イベントの復帰\r
delete this._isNew;\r
xnodes[ i ]._afterActualCreate();\r
};\r
};\r
+ \r
return this;\r
}) :\r
document.all ? (function(){\r
xnodes[ --i ]._afterActualCreate();\r
};\r
};\r
+ if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+ this._ie4getRawNode().style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
+ };\r
+ delete this._dirty;\r
return this._restoreEvent();// イベントの復帰\r
}) :\r
(function(){});\r