if( X_Node_displayNoneFixForIE5 ){\r
// filter の効いている要素を含む要素は display:none が無視される。\r
// filter = '' で削除はできるが、再表示時に filter が消える。 -> filter な要素を削除してしまう。 \r
- elm && elm.parentNode && X_Node__actualRemove( that );\r
+ if( elm && elm.parentNode ){\r
+ X_Node__actualRemove( that );\r
+ };\r
return nextElement;\r
};\r
elm && ( elm.style.display = 'none' );\r
return elm || nextElement;\r
- }; \r
+ }; \r
\r
// 5. ie5 非表示fixフラグ\r
accumulatedFlags |= that._flags;\r
if( accumulatedFlags & ( X_Node_State.DIRTY_POSITION | X_Node_State.DIRTY_ID | X_Node_State.DIRTY_CLASSNAME ) === 0 ){\r
return nextElement;\r
};\r
- \r
};\r
\r
// 6. 要素の生成\r
// 9. ie5 only\r
// 親及び自身へのクラス・id指定で display : none になるケースがありそれを検出\r
// 生成と破棄が繰り返されてしまう、親と自身の id, class が変わった場合だけ再生成。 accumulatedFlags & ( ID | CLASSNAME )\r
+ // currentStyle を観ていたときはエラーで停止する、alert と挟むと正常に動いて支離滅裂\r
if( X_Node_displayNoneFixForIE5 && that._tag ){\r
- if( elm.currentStyle.display === 'none' ){\r
+ if( elm.runtimeStyle.display === 'none' ){\r
X_Node__actualRemove( that );\r
that._flags |= X_Node_State.IE5_DISPLAY_NONE_FIX;\r
return nextElement; \r
return elm;\r
};\r
\r
+ // 4. style="display:none" の場合\r
+ if( that._flags & X_Node_State.STYLE_IS_DISPLAY_NONE ){\r
+ if( elm ){\r
+ elm.style.display = 'none';\r
+ if( elm.style.display !== 'none' ){ // ie4 の style は currentStyle 相当らしい、、、? div 以外への display:none が効かないので remove する。\r
+ X_Node__actualRemove( that );\r
+ return prevElement;\r
+ };\r
+ };\r
+ return elm || prevElement;\r
+ };\r
+ \r
if( !elm ){\r
prevElement ?\r
prevElement.insertAdjacentHTML( 'AfterEnd', X_Node__actualCreate( that, false ) ) :\r
case 'IFRAMEname' :\r
// http://d.hatena.ne.jp/NeoCat/20080921/1221940658\r
// こちらに名前をsetしないとtargetが動作しない\r
+ // これってあとから name を変更できないバグでは? itozyun\r
// if( X_UA.IE ) elm.name = elm.contentWindow.name = v || '';\r
};\r
\r
elm.removeAttribute( 'style' );\r
delete that._cssText;\r
};\r
- };\r
- \r
+ } else\r
if( that._flags & X_Node_State.DIRTY_IE_FILTER ){\r
v = X_Node_CSS_objToIEFilterText( that );\r
if( v ){\r
* document.createElement of ie4 is only for OPTION & IMAGE.\r
*/\r
var X_Node__actualCreate =\r
- X_UA_DOM.W3C ? (function( that, isChild ){\r
-\r
- }) :\r
- X_UA_DOM.IE4 ? (function( that, isChild ){\r
+ X_UA_DOM.IE4 && (function( that, isChild ){\r
var uid = that._uid,\r
html, xnodes, n, i, l;\r
\r
};\r
\r
return html.join( '' );\r
- }) :\r
- (function(){});\r
+ });\r
\r
var X_Node__afterActualCreate =\r
- X_UA_DOM.W3C ? (function( that ){\r
-\r
- }) :\r
- X_UA_DOM.IE4 ? (function( that ){\r
+ X_UA_DOM.IE4 && (function( that ){\r
var xnodes, i, v;\r
\r
if( !that._tag ) return that;\r
that._flags & X_Node_State.DIRTY_IE_FILTER && X_Node__updateRawNode( that, that._rawObject || X_Node__ie4getRawNode( that ) );\r
that._flags &= X_Node_BitMask_RESET_DIRTY;\r
X_EventDispatcher_toggleAllEvents( that, true );// イベントの復帰\r
- }) :\r
- (function(){});\r
+ });\r
\r
var X_Node__actualRemove =\r
X_UA_DOM.W3C ?\r
var xnodes = that._xnodes,\r
elm = that._rawObject,\r
child, i, l;\r
+\r
if( xnodes && ( l = xnodes.length ) ){\r
for( i = 0; i < l; ++i ){\r
child = xnodes[ i ];\r
// ちなみに elm.filters に触ると ie8 でなぜかカラム落ちが発生、、、\r
if( X_Node_displayNoneFixForIE5 ){\r
if( elm.filters && elm.filters.length ){\r
+ //elm.style.removeAttribute( 'filter' );\r
isChild = false;\r
delete that._rawObject;\r
+ // 破棄前に value を控える TODO checked, selected も!\r
+ if( X_Node_Attr_HAS_VALUE[ that._tag ] && ( !that._newAttrs || !X_Object_inObject( 'value', that._newAttrs ) ) ){\r
+ that._attrs.value = elm.value;\r
+ };\r
+ elm.innerHTML = '';\r
};\r
};\r
\r