X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F02_dom%2F20_XNode.js;h=bb392e322246062eabf787fe4415fac385d10bc3;hb=ef25747bebf1799d49f9bd0d64e339da9ea61d13;hp=e0aa70737b9d9dffde8ee039891bc16ec9ca3b7f;hpb=86c591d2888cf7b24365c1950646fb1f6190efd1;p=pettanr%2FclientJs.git
diff --git a/0.6.x/js/02_dom/20_XNode.js b/0.6.x/js/02_dom/20_XNode.js
index e0aa707..bb392e3 100644
--- a/0.6.x/js/02_dom/20_XNode.js
+++ b/0.6.x/js/02_dom/20_XNode.js
@@ -8,8 +8,7 @@
*/
var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
'X.Node',
- X_Class.POOL_OBJECT,
-
+ X_Class.NONE,
{
/**
* è¦ç´ ã«æ¯ãããã¦ãã¼ã¯ID
@@ -152,10 +151,12 @@ var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
* TODO Node ã®ç¶æ¿ãã§ããªãï¼
*/
'Constructor' : function( v ){
+ // TODO uid = X_Node_CHASHE.indexOf( null ), uid === -1 ? X_Node_CHASHE.length : uid;
var uid = X_Node_CHASHE.length,
css, xnodes, xnode, parent;
- if( X_Node_newByTag ){
+ // TODO ç¶æ¿ã¯ã©ã¹ã§ this.Super('DIV') ãã§ããªãï¼ -> ãµãã¯ã©ã¹ããå¼ã°ããå ´åã
+ if( X_Node_newByTag || this.constructor !== Node ){
X_Node_newByTag = false;
this[ '_tag' ] = v.toUpperCase();
arguments[ 1 ] && this[ 'attr' ]( arguments[ 1 ] );
@@ -221,10 +222,9 @@ var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
};
this[ '_flags' ] |= X_NodeFlags_EXIST;
X_Node_CHASHE[ this[ '_uid' ] = uid ] = this;
-
- X_EventDispatcher_systemListen( this, X_EVENT_BEFORE_KILL_INSTANCE, X_Node_onBeforeKill );
},
+ // TODO .mesure() -> X.Event.MESURED
'width' : X_Node_width,
'height' : X_Node_height,
'clientWidth' : X_Node_clientWidth,
@@ -255,6 +255,8 @@ var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
'createTextAt' : X_Node_createTextAt,
+ 'createRange' : X_Node_createRange,
+
'clone' : X_Node_clone,
'append' : X_Node_append,
@@ -291,7 +293,7 @@ var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
'toggleClass' : X_Node_toggleClass,
'hasClass' : X_Node_hasClass,
- 'html' : X_Node_html,
+ 'html' : X_Node__html,
'text' : X_Node_text,
'call' : X_Node_call,
'each' : X_Node_each
@@ -362,6 +364,7 @@ function X_Node_getType( v ){
if( X_Type_isString( v ) ){
return '<' === v.charAt( 0 ) && v.charAt( v.length - 1 ) === '>' ? X_NodeType_HTML_STRING : X_NodeType_STRING;
};
+ // Node ãµãã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹
if( v[ 'instanceOf' ] && v[ 'instanceOf' ]( Node ) ) return X_NodeType_XNODE;
return 0;
};
@@ -385,7 +388,7 @@ function X_Node_getXNode( v ){
case X_NodeType_RAW_TEXT :
if( v[ 'UID' ] ) return X_Node_CHASHE[ v[ 'UID' ] ];
for( chashe = X_Node_CHASHE, i = chashe.length; i; ){
- if( ( xnode = X_Node_CHASHE[ --i ] ) && ( xnode[ '_rawObject' ] === v ) ) return xnode;
+ if( ( xnode = chashe[ --i ] ) && ( xnode[ '_rawObject' ] === v ) ) return xnode;
};
};
};
@@ -396,11 +399,10 @@ function X_Node_getRoot( xnode ){
};
-
+// TODO document.all[ uid ] -> document[ uid ]
var X_Node__ie4getRawNode = X_UA_DOM.IE4 && function ( that ){
return that[ '_rawObject' ] ||
- ( that[ '_rawObject' ] = document.all[ 'ie4uid' + that[ '_uid' ] ] ) ||
- ( that[ '_id' ] && ( that[ '_rawObject' ] = document.all[ that[ '_id' ] ] ) );
+ ( that[ '_rawObject' ] = document.all[ 'ie4uid' + that[ '_uid' ] ] || that[ '_id' ] && document.all[ that[ '_id' ] ] );
};
@@ -448,6 +450,7 @@ function X_Node_toggleInGPUFlag( gpuRoot, xnodes, flag ){
*/
function X_Node_create( tag, opt_attrs, opt_css ){
var xnode;
+
if( !this[ '_tag' ] ) return;
this[ 'append' ]( xnode = X_Doc_create( tag, opt_attrs, opt_css ) );
return xnode;
@@ -496,6 +499,15 @@ function X_Node_createTextAt( index, text ){
};
/**
+ * é¸æãããããã¹ãã¸ã®åç
§ãããã¹ã座æ¨æ
å ±
+ * @alias Node.prototype.createRange
+ * @return {TextRange} æ°è¦ä½æãããããã¹ãã¬ã³ã¸
+ */
+function X_Node_createRange( a, b, c ){
+ return X_TextRange( this, a, b, c );
+};
+
+/**
* Node ã®ã¯ãã¼ã³ãä½æãè¿ããid ãã¯ãã¼ã³ãããç¹ã«æ³¨æãã¤ãã³ããªã¹ãã¯ã¯ãã¼ã³ãããªãã
* http://d.hatena.ne.jp/think49/20110724/1311472811
* http://d.hatena.ne.jp/uupaa/20100508/1273299874
@@ -505,17 +517,26 @@ function X_Node_createTextAt( index, text ){
*/
function X_Node_clone( opt_clone_children ){
var xnode, xnodes, i, l;
+
if( this[ '_tag' ] ){
X_Node_newByTag = true;
- xnode = Node( this[ '_tag' ], X_Object_clone( this[ '_attrs' ] ), X_Object_clone( this[ '_css' ] ) )
+ xnode = Node( this[ '_tag' ], X_Object_copy( this[ '_attrs' ] ), X_Object_copy( this[ '_css' ] ) )
[ 'attr' ]( { 'id' : this[ '_id' ] } )
[ 'className' ]( this[ '_className' ] );
+
+ if( this[ '_flags' ] & X_NodeFlags_IS_SVG ){
+ xnode[ '_flags' ] |= X_NodeFlags_IS_SVG;
+ };
+ if( this[ '_flags' ] & X_NodeFlags_IS_VML ){
+ xnode[ '_flags' ] |= X_NodeFlags_IS_VML;
+ };
+
if( opt_clone_children && ( xnodes = this[ '_xnodes' ] ) && ( l = xnodes.length ) ){
for( i = 0; i < l; ++i ){
xnode[ 'append' ]( xnodes[ i ][ 'clone' ]( true ) );
};
};
- return xnode;
+ return xnode;
};
X_Node_newByText = true;
return Node( this[ '_text' ] );
@@ -553,9 +574,10 @@ function X_Node_append( v ){
return X_Node_append.apply( this, X_HtmlParser_parse( v, true ) );
case X_NodeType_XNODE :
// 親㮠xnodes ãã v ãæ¶ã
- v.parent && v[ 'remove' ]();
+ if( v.parent === this && xnodes[ xnodes.length - 1 ] === v ) return this;
+ v[ 'remove' ]();
// IE4 ã§ããã¹ããã¼ãã®è¿½å ãFIXED æ¸ã§ãªãå ´åã親ã«è¦ç´ ã®è¿½å ãéç¥
- if( X_UA[ 'IE4' ] && !v[ '_tag' ] && ( this[ '_flags' ] & X_NodeFlags_IE4_FIXED ) === 0 ) this[ '_flags' ] |= X_NodeFlags_IE4_DIRTY_CHILDREN;
+ if( X_UA[ 'IE4' ] && !v[ '_tag' ] && ( ( this[ '_flags' ] & X_NodeFlags_IE4_FIXED ) === 0 ) ) this[ '_flags' ] |= X_NodeFlags_IE4_DIRTY_CHILDREN;
break;
default :
return this;
@@ -568,6 +590,12 @@ function X_Node_append( v ){
v[ '_xnodes' ] && X_Node_toggleInTreeFlag( v[ '_xnodes' ], true );
X_Node_reserveUpdate();
};
+ if( this[ '_flags' ] & X_NodeFlags_IS_SVG ){
+ v[ '_flags' ] |= X_NodeFlags_IS_SVG;
+ };
+ if( this[ '_flags' ] & X_NodeFlags_IS_VML ){
+ v[ '_flags' ] |= X_NodeFlags_IS_VML;
+ };
return this;
};
@@ -625,7 +653,7 @@ function X_Node_appendAt( start, v ){
v[ 'remove' ]();
};
// IE4 ã§ããã¹ããã¼ãã®è¿½å ãFIXED æ¸ã§ãªãå ´åã親ã«è¦ç´ ã®è¿½å ãéç¥
- if( X_UA[ 'IE4' ] && !v[ '_tag' ] && ( this[ '_flags' ] & X_NodeFlags_IE4_FIXED ) === 0 ) this[ '_flags' ] |= X_NodeFlags_IE4_DIRTY_CHILDREN;
+ if( X_UA[ 'IE4' ] && !v[ '_tag' ] && ( ( this[ '_flags' ] & X_NodeFlags_IE4_FIXED ) === 0 ) ) this[ '_flags' ] |= X_NodeFlags_IE4_DIRTY_CHILDREN;
break;
default :
return this;
@@ -638,6 +666,12 @@ function X_Node_appendAt( start, v ){
v[ '_xnodes' ] && X_Node_toggleInTreeFlag( v[ '_xnodes' ], true );
X_Node_reserveUpdate();
};
+ if( this[ '_flags' ] & X_NodeFlags_IS_SVG ){
+ v[ '_flags' ] |= X_NodeFlags_IS_SVG;
+ };
+ if( this[ '_flags' ] & X_NodeFlags_IS_VML ){
+ v[ '_flags' ] |= X_NodeFlags_IS_VML;
+ };
return this;
};
@@ -749,10 +783,11 @@ function X_Node_swap( v ){
};
/**
- * è¦ç´ ãæãã
+ * è¦ç´ ã親è¦ç´ ããæããjQuery ã®ãremove ã¨ç°ãªããã¤ã³ã¹ã¿ã³ã¹ã¯ç ´å£(kill)ããããåã³å¥ã®è¦ªã«æ¿å
¥çã§ãã
* @alias Node.prototype.remove
* @return {Node} èªèº«ããã§ã¤ã³ã¡ã½ãã
* @example node.remove();
+ * parent.append( node ); æ°ãã親ã«è¿½å ã§ãã
*/
function X_Node_remove(){
var parent = this.parent,
@@ -760,6 +795,14 @@ function X_Node_remove(){
if( !parent ) return this;
+ // stop() ->
+ if( this[ '_anime' ] && this[ '_anime' ].phase ){
+ console.log( 'Animation ä¸ã® REMOVE' );
+ X_NodeAnime_stopNow( this );
+ };
+ // åå«ã«ã¢ãã¡ã¼ã·ã§ã³ä¸ã®è¦ç´ ãè¦ã
+ // å
ç¥ã« GPU åããè¦ç´ ãè¦ã
+
delete this.parent;
parent[ '_xnodes' ].splice( parent[ '_xnodes' ].indexOf( this ), 1 );
@@ -768,12 +811,11 @@ function X_Node_remove(){
this[ '_xnodes' ] && X_Node_toggleInTreeFlag( this[ '_xnodes' ], false );
if( X_UA_DOM.IE4 ){
- elm = this[ '_rawObject' ] || X_Node__ie4getRawNode( this );
- if( elm ){
+ if( elm = this[ '_rawObject' ] || X_Node__ie4getRawNode( this ) ){
X_Node_reserveRemoval[ X_Node_reserveRemoval.length ] = this;
- X_Node_reserveUpdate();
+ X_Node_reserveUpdate();
} else
- if( !this[ '_tag' ] && ( parent[ '_flags' ] & X_NodeFlags_IE4_FIXED ) === 0 ){
+ if( !this[ '_tag' ] && ( ( parent[ '_flags' ] & X_NodeFlags_IE4_FIXED ) === 0 ) ){
parent[ '_flags' ] |= X_NodeFlags_IE4_DIRTY_CHILDREN;
};
} else {
@@ -783,6 +825,14 @@ function X_Node_remove(){
X_Node_reserveUpdate();
};
};
+ } else {
+ if( !X_UA_DOM.IE4 ){
+ elm = this[ '_rawObject' ];
+ if( elm && elm.parentNode && elm.parentNode.tagName ){
+ X_Node_reserveRemoval[ X_Node_reserveRemoval.length ] = this;
+ X_Node_reserveUpdate();
+ };
+ };
};
return this;
};
@@ -795,7 +845,9 @@ function X_Node_remove(){
*/
function X_Node_empty(){
var xnodes = this[ '_xnodes' ], i;
+
if( xnodes && ( i = xnodes.length ) ){
+ delete this[ '_xnodes' ];
for( ; i; ){
xnodes[ --i ][ 'kill' ]();
};
@@ -804,33 +856,51 @@ function X_Node_empty(){
return this;
};
-function X_Node_onBeforeKill( e ){
- var xnodes = this[ '_xnodes' ], i, elm;
+function X_Node_onKill( that ){
+ var parent = that.parent,
+ xnodes = that[ '_xnodes' ], i, elm;
- if( ( this[ '_flags' ] & X_NodeFlags_EXIST ) === 0 ) return X_Callback_NONE;
+ if( ( that[ '_flags' ] & X_NodeFlags_EXIST ) === 0 ) return;
- elm = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );
- elm && this[ '_listeners' ] && X_EventDispatcher_unlistenAll( this ); // ã¤ãã³ãã®éé¿
+ parent && parent[ '_xnodes' ] && parent[ '_xnodes' ].splice( parent[ '_xnodes' ].indexOf( that ), 1 );
if( xnodes && ( i = xnodes.length ) ){
+ delete that[ '_xnodes' ];
for( ; i; ){
- X_Node_onBeforeKill.call( xnodes[ --i ] );
+ xnodes[ --i ][ 'kill' ]();
};
+ xnodes.length = 0;
};
- delete X_Node_CHASHE[ this[ '_uid' ] ];
+ X_Node_CHASHE[ that[ '_uid' ] ] = null; // array ã«å¯¾ã㦠delete X_Node_CHASHE[ uid ]ãã¯ã¾ãã!
+
+ if( that[ '_anime' ] && that[ '_anime' ].phase ){
+ console.log( 'Animation ä¸ã® KILL' );
+ X_NodeAnime_stopNow( that );
+ };
- if( e ){
- this[ 'remove' ]();
- if( X_Node_reserveRemoval[ X_Node_reserveRemoval.length - 1 ] === this ){
- this[ '_flags' ] &= ~X_NodeFlags_EXIST;
- return X_Callback_PREVENT_DEFAULT;
- };
+ elm = that[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( that );
+
+// remove _xnodes
+ if( X_UA_DOM.IE4 ){
+ if( elm ){
+ X_Node_reserveRemoval[ X_Node_reserveRemoval.length ] = elm;
+ X_Node_reserveUpdate();
+ } else
+ if( !that[ '_tag' ] && ( ( parent[ '_flags' ] & X_NodeFlags_IE4_FIXED ) === 0 ) ){
+ parent[ '_flags' ] |= X_NodeFlags_IE4_DIRTY_CHILDREN;
+ };
+ } else {
+ if( elm && elm.parentNode && elm.parentNode.tagName ){
+ X_Node_reserveRemoval[ X_Node_reserveRemoval.length ] = elm;
+ X_Node_reserveUpdate();
+ };
};
- return X_Callback_NONE;
};
+
+
/**
* è¦ç´ ãå以ä¸ã«æã¤ãï¼èª¿ã¹ãã
* @alias Node.prototype.contains
@@ -839,21 +909,15 @@ function X_Node_onBeforeKill( e ){
* @example node.contains( testNode );
*/
function X_Node_contains( v ){
- var elm, type, xnodes, i;
+ var xnodes;
+
if( !v || !this[ '_tag' ] || this === v ) return false;
- // contains ie4+
- if( ( elm = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this ) ) && document.contains && ( type = X_Node_getType( v ) ) && ( type === X_NodeType_RAW_HTML || type === X_NodeType_RAW_TEXT ) ){
- return elm.contains( v );
- };
- //if( document.compareDocumentPosition ){
- //
- //};
xnodes = this[ '_xnodes' ];
if( !xnodes || !xnodes.length ) return false;
- if( xnodes.indexOf( v ) !== -1 ) return true; // fast
- for( i = xnodes.length; i; ){
- if( xnodes[ --i ][ 'contains' ]( v ) ) return true;
+
+ while( v = v[ 'parent' ] ){
+ if( this === v ) return true;
};
return false;
};
@@ -1053,12 +1117,17 @@ function X_Node_hasClass( v ){
* @return {string|Node}
* @example node.html( '
' );
*/
-function X_Node_html( html ){
+function X_Node__html( html ){
var _ = '', q = '"', xnodes, n, i, l;
// setter
if( html !== undefined ){ // String 以å¤ã« Number ã false null ãªã©ã許å¯
if( !this[ '_tag' ] ) return this[ 'text' ]( html );
- return html ? this[ 'empty' ]()[ 'append' ].apply( this, X_HtmlParser_parse( html, true ) ) : this[ 'empty' ]();
+
+ this[ 'empty' ]();
+ if( html += '' ){
+ X_Node_append.apply( this, X_HtmlParser_parse( html, true ) );
+ };
+ return this;
};
// getter
@@ -1136,14 +1205,28 @@ function X_Node_text( text ){
return this[ '_text' ];
};
-/*
+/**
* HTMLè¦ç´ ã«å¯¾ã㦠name ã®é¢æ°ãå®è¡ããã®æ»ãå¤ãè¿ããé¢æ°ã«æ¸¡ãå¼æ°ãä»»æã«è¨å®ã§ããã
+ * @alias Node.prototype.call
+ * @param {string} [name] è¦ç´ ã®é¢æ°å
+ * @return {*}
+ * @example node.call( 'focus' );
*/
function X_Node_call( name /*, opt_args... */ ){
- var l = arguments.length - 1,
- raw, func, args, params, i;
+ var args = arguments,
+ l = args.length - 1,
+ v, raw, parent, body,
+ child, childX, childY, childW, childH,
+ parentW, parentH,
+ parentSX, parentSY, parentSW, parentSH,
+ visibleX, visibleY, visibleW, visibleH,
+ visiblePartX, visiblePartY, func, args, params, i;
switch( name ){
+ case 'isSVG' :
+ return !!( this[ '_flags' ] & X_NodeFlags_IS_SVG );
+ case 'isVML' :
+ return !!( this[ '_flags' ] & X_NodeFlags_IS_VML );
case 'nodeType' :
return this[ '_tag' ] ? 1 : 3;
case 'outerHTML' :
@@ -1154,36 +1237,105 @@ function X_Node_call( name /*, opt_args... */ ){
case 'treeIsDirty' :
return !!X_Node_updateTimerID;
case 'fontSize' :
- return X_Node_CSS_getCharSize( this );
+ return ( this[ '_flags' ] & X_NodeFlags_IN_TREE ) ? X_Node_CSS_getCharSize( this ) : 0;
case 'inGPU' :
return !!( this[ '_flags' ] & ( X_NodeFlags_GPU_NOW | X_NodeFlags_GPU_RELEASE_RESERVED ) );
+ case 'isGPUChild' :
+ if( this[ '_flags' ] & X_NodeFlags_IN_TREE ){
+ parent = this;
+ while( parent = parent.parent ){
+ if( parent[ '_flags' ] & ( X_NodeFlags_GPU_NOW | X_NodeFlags_GPU_RELEASE_RESERVED ) ) return true;
+ };
+ };
+ return false;
+ case 'containGPU' :
+
+ return false;
+ case 'canAnimateNow' :
+ return ( this[ '_flags' ] & X_NodeFlags_IN_TREE ) && X_NodeAnime_detectWaitAnimation( this, true, true ) === 6;
+ case 'animeState' :
+ return this[ '_anime' ] ? this[ '_anime' ].phase : 0;
+ case 'animeProgress' :
+ return this[ '_anime' ] && this[ '_anime' ].phase === 7 ? this[ '_anime' ].progress : 0;
};
X_Node_updateTimerID && X_Node_startUpdate();
raw = this[ '_rawObject' ] || X_UA_DOM.IE4 && X_Node__ie4getRawNode( this );
+
if( !raw ) return;
if( name === 'scrollTo' ){
- raw.scrollLeft = arguments[ 1 ] || 0;
- raw.scrollTop = arguments[ 2 ] || 0;
+ raw.scrollLeft = args[ 1 ] || 0;
+ raw.scrollTop = args[ 2 ] || 0;
return;
};
+ if( name === 'inView' ){
+ if( !( this[ '_flags' ] & X_NodeFlags_IN_TREE ) ) return { 'isInView' : false };
+ body = X_elmBody;
+ child = raw;
+ visibleX = visibleY = visibleW = visibleH = 0;
+ while( child !== body ){
+ parent = child.parentNode || child.parentElement;
+ parentH = parent.clientHeight;
+ parentW = parent.clientWidth;
+ parentSW = parent.scrollHeight;
+ parentSH = parent.scrollWidth;
+ // 親ãã¹ã¯ãã¼ã«é åãæã¤
+ if( parentH < parentSH || parentW < parentSW ){
+ childX = child.offsetLeft + visibleX;
+ childY = child.offsetTop + visibleY;
+ childW = visibleW || child.offsetWidth;
+ childH = visibleH || child.offsetHeight;
+ parentSX = parent.scrollLeft;
+ parentSY = parent.scrollTop;
+ // åã表示é åå
+ if( parentSY < childY + childH &&
+ childY < parentSY + parentH &&
+ parentSX < childX + childW &&
+ childX < parentSX + parentW ){
+
+ // right:åã®å·¦å´ãè¦ãã¦ãã left:åã®å·¦å´ãè¦ãã¦ãã both:å®å
¨ã«è¦ãã¦ãã
+ visiblePartX =
+ childX < parentSX ? 'right' :
+ ( parentSX + parentW ) < ( childX + childW ) ? 'left' : 'both';
+ visiblePartY =
+ childY < parentSY ? 'bottom' :
+ ( parentSY + parentH ) < ( childY + childH ) ? 'top' : 'both';
+
+ // åãè¦ããé å
+ visibleX = visiblePartX === 'right' ? 0 : childX - parentSX;
+ visibleY = visiblePartX === 'bottom' ? 0 : childY - parentSY;
+ visibleW =
+ visiblePartX === 'both' ? childW :
+ visiblePartX === 'right' ? ( parentSX + parentW - childX ) : ( childX + childW - parentSX );
+ visibleH =
+ visiblePartY === 'both' ? childH :
+ visiblePartY === 'bottom' ? ( parentSY + parentH - childY ) : ( childY + childH - parentSY );
+ } else {
+ return { 'isInView' : false };
+ };
+ };
+ child = parent;
+ };
+ return { 'isInView' : true };
+ };
+
func = raw[ name ];
if( X_Type_isFunction( func ) ){
if( l ){
- args = X_Object_cloneArray( arguments );
+ args = X_Array_copy( args );
args.shift();
return func.apply( raw, args );
};
return raw[ name ]();
} else
- if( X_Type_isUnknown( func ) ){
+ if( X_UA[ 'IE' ] < 9 && ( X_Type_isUnknown( func ) || X_Type_isObject( func ) ) ){
// typeof func === unknown ã«å¯¾ç
// http://la.ma.la/blog/diary_200509031529.htm
if( l ){
- args = X_Object_cloneArray( arguments );
+ args = X_Array_copy( args );
args.shift();
params = [];
@@ -1207,7 +1359,7 @@ function X_Node_call( name /*, opt_args... */ ){
function X_Node_each( func /*, opt_args */ ){
var args;
if( 1 < arguments.length ){
- args = X_Object_cloneArray( arguments );
+ args = X_Array_copy( arguments );
args[ 0 ] = 0;
func.apply( this, args );
} else {
@@ -1230,7 +1382,7 @@ function X_Node_reserveUpdate(){
var X_Node_updateReservedByReleaseGPU = false;
function X_Node_startUpdate( time ){
- var removal, i, xnode;
+ var removal, i, xnodeOrElm, xnodesIEFilterFixAfter, xnode, active;
if( !X_Node_updateTimerID || X_ViewPort_readyState < X_EVENT_INIT ){
return;
@@ -1248,19 +1400,45 @@ function X_Node_startUpdate( time ){
if( i = removal.length ){
for( ; i; ){
- xnode = removal[ --i ];
+ xnodeOrElm = removal[ --i ];
// TODO GPU ã¬ã¤ã¤ã¼ã®åã®å ´åãremove ãã¹ãããããã éGPU ã¬ã¤ã¤ã¼ã¸ apppend ãããå ´åãclone ãã?
- X_Node__actualRemove( xnode );
- ( xnode[ '_flags' ] & X_NodeFlags_EXIST ) === 0 && xnode[ 'kill' ]();
+ // GPU ã¬ã¤ã¤ã¼ãåé¤ããå ´åãcssText = '' ã㦠GPU ã¬ã¤ã¤ã¼ã解é¤ãã
+ if( !xnodeOrElm[ 'instanceOf' ] ){
+ if( X_UA_DOM.IE4 ){
+ xnodeOrElm.removeAttribute( 'id' ); // ?
+ xnodeOrElm.outerHTML = ''; // xnodeOrElm.remove() ?
+ } else {
+ if( !X_UA[ 'MacIE' ] ){
+ // elm.parentNode.tagName for ie7
+ xnodeOrElm.parentNode && xnodeOrElm.parentNode.tagName && xnodeOrElm.parentNode.removeChild( xnodeOrElm );
+ } else {
+ xnodeOrElm.parentNode && xnodeOrElm.parentNode.tagName && X_TEMP._fixed_remove( xnodeOrElm, that );
+ };
+ };
+ } else {
+ X_Node__actualRemove( xnodeOrElm );
+ };
};
removal.length = 0;
};
+ // å¼·å¶çã«åæç»ãèµ·ãã, ä½ã activeElement ãããã©ã¼ã«ã¹ãå¤ãããã復帰ãã
+ // IE5mode win10 㧠確èª
+ if( X_UA[ 'IE5' ] ){
+ active = document.activeElement;
+ X_elmBody.style.visibility = 'hidden';
+ };
+
if( X_Node_html[ '_flags' ] & X_Node_BitMask_IS_DIRTY ){
- X_Node__commitUpdate( X_Node_html, X_Node_html[ '_rawObject' ].parentNode, null, X_Node_html[ '_flags' ] );
+ X_Node__commitUpdate( X_Node_html, X_Node_html[ '_rawObject' ].parentNode, null, X_Node_html[ '_flags' ], 1, xnodesIEFilterFixAfter = [] );
} else {
- X_Node__commitUpdate( X_Node_head, X_Node_head[ '_rawObject' ].parentNode, null, X_Node_head[ '_flags' ] );
- X_Node__commitUpdate( X_Node_body, X_Node_body[ '_rawObject' ].parentNode, null, X_Node_body[ '_flags' ] );
+ X_Node__commitUpdate( X_Node_head, X_Node_head[ '_rawObject' ].parentNode, null, X_Node_head[ '_flags' ], 1, xnodesIEFilterFixAfter = [] );
+ X_Node__commitUpdate( X_Node_body, X_Node_body[ '_rawObject' ].parentNode, null, X_Node_body[ '_flags' ], 1, xnodesIEFilterFixAfter = [] );
+ };
+
+ if( X_UA[ 'IE5' ] ){
+ X_elmBody.style.visibility = '';
+ active && active.parentNode && active.focus();
};
if( X_Node_updateReservedByReleaseGPU ){
@@ -1268,12 +1446,16 @@ function X_Node_startUpdate( time ){
X_Node_updateReservedByReleaseGPU = false;
};
- if( time ){
- // X.Timer çµç±ã§ãªãã¨çºç«ããªã ãã®ã¤ãã³ãã§ãµã¤ãºãåãã¨ç¡éã«ã¼ãã«
- X_System[ '_listeners' ] && X_System[ '_listeners' ][ X_EVENT_UPDATED ] && X_System[ 'dispatch' ]( X_EVENT_UPDATED );
- } else {
- X_System[ '_listeners' ] && X_System[ '_listeners' ][ X_EVENT_UPDATED ] && X_System[ 'asyncDispatch' ]( X_EVENT_UPDATED );
+ if( X_NodeFlags_IE_FILTER_FIX_AFTER && xnodesIEFilterFixAfter.length ){
+ for( i = 0; xnode = xnodesIEFilterFixAfter[ i ]; ++i ){
+ xnode[ '_flags' ] &= ~X_NodeFlags_IE_FILTER_FIX_AFTER;
+ X_Node_CSS_onAfterUpdateIEFilterFix( xnode );
+ };
};
+
+ // time ãè¦ã¦ X.Timer çµç±ã®å ´åãå³åº§ã«çºç«ããã
+ // width() çã§å¼·å¶çã«ããªã¼ãæ§ç¯ãã¦ããå ´åãUPDATE ã¤ãã³ãã®ã³ã¼ã«ããã¯ã§è¦ç´ ãå¤æ´ããµã¤ãºãåãã¨ç¡éã«ã¼ãã«ãªã,ãããé²ããã asyncDispatch ã¨ãã
+ X_System[ '_listeners' ] && X_System[ '_listeners' ][ X_EVENT_UPDATED ] && X_System[ time ? 'dispatch' : 'asyncDispatch' ]( X_EVENT_UPDATED );
X_ViewPort[ '_listeners' ] && X_ViewPort[ '_listeners' ][ X_EVENT_AFTER_UPDATE ] && X_ViewPort[ 'asyncDispatch' ]( X_EVENT_AFTER_UPDATE );
};
@@ -1293,28 +1475,28 @@ function X_Node_startUpdate( time ){
*/
var X_Node__commitUpdate =
X_UA_DOM.W3C ?
- ( function( that, parentElement, nextElement, accumulatedFlags ){
+ ( function( that, parentElement, nextElement, accumulatedFlags, ie8AccumulatedOpcity, xnodesIEFilterFixAfter ){
var elm = that[ '_rawObject' ],
- created, xnodes, l, next;
+ created, xnodes, l, next, anime, v, currentOpcity;
// 1. GPU ä¸åã®æ´æ°ãã¹ããã
if( that[ '_flags' ] & X_NodeFlags_GPU_NOW ){
- console.log( 'æ´æ°ã®skip ' + !!( that[ '_flags' ] & X_Node_BitMask_IS_DIRTY ) );
+ console.log( 'æ´æ°ã®skip ' + that[ '_className' ] + !!( that[ '_flags' ] & X_Node_BitMask_IS_DIRTY ) );
that[ '_flags' ] & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm );
return elm;
};
// 2. GPU解æ¾äºç´
if( that[ '_flags' ] & X_NodeFlags_GPU_RELEASE_RESERVED ){
- // console.log( 'GPU è§£æ¾ ' );
+ console.log( 'GPU è§£æ¾ ' );
//X_Node_updateReservedByReleaseGPU = true;
- //X_Node__updateRawNode( that, elm );
that[ '_flags' ] &= X_Node_BitMask_RESET_GPU;
- //return elm;// TODO ãããããããã®ã¿ã¤ãã³ã°ã§æ´æ°ã§ããããã
+ //return elm;// ãã®ã¿ã¤ãã³ã°ã§æ´æ°ã§ããã£ã½ãã
};
// 3. GPUäºç´ -> GPU
if( that[ '_flags' ] & X_NodeFlags_GPU_RESERVED ){
+ // TODO size åå¾ã®ããã® update ã®å ´åãGPUåãã¹ããã
that[ '_flags' ] &= X_Node_BitMask_RESET_GPU;
that[ '_flags' ] |= X_NodeFlags_GPU_NOW;
};
@@ -1323,7 +1505,8 @@ var X_Node__commitUpdate =
if( that[ '_flags' ] & X_NodeFlags_STYLE_IS_DISPLAY_NONE ){
if( X_Node_displayNoneFixForIE5 ){
// filter ã®å¹ãã¦ããè¦ç´ ãå«ãè¦ç´ 㯠display:none ãç¡è¦ãããã
- // filter = '' ã§åé¤ã¯ã§ããããå表示æã« filter ãæ¶ããã -> filter ãªè¦ç´ ãåé¤ãã¦ãã¾ãã
+ // filter = '' ã§åé¤ã¯ã§ããããå表示æã« filter ãæ¶ããã -> filter ãªè¦ç´ ãåé¤ãã¦ãã¾ãã
+ // TODO filters[0].enabled = false ãªãã¦ã©ã?
if( elm && elm.parentNode ){
X_Node__actualRemove( that );
};
@@ -1337,7 +1520,7 @@ var X_Node__commitUpdate =
accumulatedFlags |= that[ '_flags' ];
if( that[ '_flags' ] & X_NodeFlags_IE5_DISPLAY_NONE_FIX ){
- if( accumulatedFlags & ( X_NodeFlags_DIRTY_POSITION | X_NodeFlags_DIRTY_ID | X_NodeFlags_DIRTY_CLASSNAME ) === 0 ){
+ if( ( accumulatedFlags & ( X_NodeFlags_DIRTY_POSITION | X_NodeFlags_DIRTY_ID | X_NodeFlags_DIRTY_CLASSNAME ) ) === 0 ){
return nextElement;
};
};
@@ -1346,7 +1529,12 @@ var X_Node__commitUpdate =
if( !elm ){
if( !that[ '_tag' ] ){
that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;
- that[ '_rawObject' ] = elm = document.createTextNode( X_String_chrReferanceTo( that[ '_text' ] ) );
+ if( X_UA[ 'IE' ] < 8 ){
+ // \n -> \r\n ã«å¤æããªã㨠pre ã¿ã°ã§éæ¥ãããªã win10ie7(ie11 emu) ã§ç¢ºèª
+ elm = document.createTextNode( X_String_chrReferanceTo( that[ '_text' ] ).split( '\n' ).join( X_String_CRLF ) );
+ } else {
+ elm = document.createTextNode( X_String_chrReferanceTo( that[ '_text' ] ) );
+ };
if( !X_UA[ 'IE' ] ){
elm[ 'UID' ] = that[ '_uid' ];
};
@@ -1354,7 +1542,7 @@ var X_Node__commitUpdate =
if( X_Node_strictElmCreation ){
that[ '_flags' ] & X_NodeFlags_OLD_CSSTEXT && X_Node_CSS_objToCssText( that, true ); // OLD_CSSTEXT ??
- that[ '_rawObject' ] = elm =
+ elm =
document.createElement( [
'<', that[ '_tag' ],
' UID="', that[ '_uid' ], '"',
@@ -1363,10 +1551,17 @@ var X_Node__commitUpdate =
X_Node_Attr_objToAttrText( that, true ),
that[ '_cssText' ] ? ' style="' + that[ '_cssText' ] + '"' : '',
'>' ].join( '' ) );
+ } else
+ if( that[ '_flags' ] & X_NodeFlags_IS_SVG ){
+ elm = document.createElementNS( 'http://www.w3.org/2000/svg', that[ '_tag' ].toLowerCase() );
+
+ // TODO math http://www.w3.org/1998/Math/MathML
} else {
- that[ '_rawObject' ] = elm = document.createElement( that[ '_tag' ] );
+ elm = document.createElement( that[ '_tag' ] );
};
+ that[ '_rawObject' ] = elm;
+
// IE ã«ã¯è¦ç´ 追å ã®ã¿ã¤ãã³ã°ã§èµ·ããã¡ã¢ãªãªã¼ã¯ãããããã§è¿½å
if( !X_Node_addTreeAfterChildren ){
nextElement ?
@@ -1378,10 +1573,10 @@ var X_Node__commitUpdate =
X_EventDispatcher_toggleAllEvents( that, true );// ã¤ãã³ãã®å¾©å¸°
that[ '_flags' ] |= X_NodeFlags_ACTUAL_LISTENING;
- if( X_Node_documentFragment ){
+ //if( X_Node_documentFragment ){
//( frg = X_Node_documentFragment ).appendChild( elm );
// é£ç¶ããè¦ç´ ã®å·®ãæ¿ãã®å ´åã«æå¹
- };
+ //};
if( X_Node_strictElmCreation ){
that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;
@@ -1414,15 +1609,19 @@ var X_Node__commitUpdate =
parentElement.appendChild( elm );
};
- if( that[ '_listeners' ] && ( that[ '_flags' ] & X_NodeFlags_ACTUAL_LISTENING ) === 0 ){
+ if( that[ '_listeners' ] && ( ( that[ '_flags' ] & X_NodeFlags_ACTUAL_LISTENING ) === 0 ) ){
X_EventDispatcher_toggleAllEvents( that, true );// ã¤ãã³ãã®éé¿
that[ '_flags' ] |= X_NodeFlags_ACTUAL_LISTENING;
};
+ // ie8 ã§ã¯åè¦ç´ ã« opacity ãåæ ãããªãããã親è¦ç´ ã® opacity ãç©ç®ãã
+ currentOpcity = that[ '_css' ] && 0 <= that[ '_css' ].opacity && that[ '_css' ].opacity;
+ ie8AccumulatedOpcity = ie8AccumulatedOpcity * ( currentOpcity || 1 );
+
// 8. æ´æ°ã®é©ç¨
if( accumulatedFlags & X_Node_BitMask_IS_DIRTY ){
delete that[ '_fontSize' ];
- X_Node__updateRawNode( that, elm );
+ X_Node__updateRawNode( that, elm, currentOpcity, ie8AccumulatedOpcity, accumulatedFlags );
};
// 9. ie5 only
@@ -1439,10 +1638,14 @@ var X_Node__commitUpdate =
};
};
+ if( that[ '_flags' ] & X_NodeFlags_IE_FILTER_FIX_AFTER ){
+ xnodesIEFilterFixAfter[ xnodesIEFilterFixAfter.length ] = that;
+ };
+
// 10. åè¦ç´ ã®æ´æ°ã
if( ( xnodes = that[ '_xnodes' ] ) && ( l = xnodes.length ) ) {
for( ; l; ){
- next = X_Node__commitUpdate( xnodes[ --l ], elm, next, accumulatedFlags );
+ next = X_Node__commitUpdate( xnodes[ --l ], elm, next, accumulatedFlags, ie8AccumulatedOpcity, xnodesIEFilterFixAfter );
};
};
@@ -1457,12 +1660,34 @@ var X_Node__commitUpdate =
};
};
+/*
+ * if( ( anime = that[ '_anime' ] ) && 6 <= anime.phase && anime.doScroll ){
+ if( anime.phase === 6 ){
+ v = anime.fromScrollX;
+ if( v === v ){
+ elm.scrollLeft = v;
+ } else {
+ anime.fromScrollX = elm.scrollLeft;
+ };
+ v = anime.fromScrollY;
+ if( v === v ){
+ elm.scrollTop = v;
+ } else {
+ anime.fromScrollY = elm.scrollTop;
+ };
+ } else {
+ elm.scrollLeft = anime.scrollX;
+ elm.scrollTop = anime.scrollY;
+ };
+ };
+ */
+
return elm;
}) :
X_UA_DOM.IE4 ?
( function( that, parentElement, prevElement, accumulatedFlags ){
var elm = that[ '_rawObject' ] || X_Node__ie4getRawNode( that ),
- xnodes, l, i, dirty, mix, html, text, prev;
+ xnodes, l, i, dirty, mix, html, text, prev, anime, v;
if( !that[ '_tag' ] ){
that[ '_flags' ] & X_NodeFlags_DIRTY_CONTENT && X_Node__updateRawNode( that, elm );
@@ -1486,68 +1711,90 @@ var X_Node__commitUpdate =
prevElement.insertAdjacentHTML( 'AfterEnd', X_Node__actualCreate( that, false ) ) :
parentElement.insertAdjacentHTML( 'AfterBegin', X_Node__actualCreate( that, false ) );
X_Node__afterActualCreate( that );
- return that[ '_rawObject' ] || X_Node__ie4getRawNode( that );
- };
-
- accumulatedFlags |= that[ '_flags' ];
-
- xnodes = that[ '_xnodes' ];
- l = xnodes ? xnodes.length : 0;
- dirty = !!( that[ '_flags' ] & X_NodeFlags_IE4_DIRTY_CHILDREN );
-
- /*
- * HTML ã®ä¸ã« TextNode ã ã ãMIX_FIXEDãã§ãªãå ´åãåé¤ã追å ã親ã«éç¥
- * HTML ã®ä¸ã« HTML ã ã
- * HTML ã®ä¸ã¯ MIX -> TextNode, html ã®åé¤ãå¤æ´ã追å
- * HTML ã®ä¸ã¯ MIX_FIXED -> TextNode ã ã«ç½®ãæãã¦ããã®ã§W3C DON çã«è§¦ããã¨ãã§ãã
- */
- if( dirty ){
- that[ '_flags' ] &= ~X_NodeFlags_IE4_DIRTY_CHILDREN;
- for( i = 0; i < l; ++i ){
- if( xnodes[ i ][ '_tag' ] ){
- that[ '_flags' ] |= X_NodeFlags_IE4_HAS_ELEMENT;
- } else {
- that[ '_flags' ] |= X_NodeFlags_IE4_HAS_TEXTNODE;
+
+ elm = that[ '_rawObject' ] || X_Node__ie4getRawNode( that );
+ } else {
+ accumulatedFlags |= that[ '_flags' ];
+
+ xnodes = that[ '_xnodes' ];
+ l = xnodes ? xnodes.length : 0;
+ dirty = !!( that[ '_flags' ] & X_NodeFlags_IE4_DIRTY_CHILDREN );
+
+ /*
+ * HTML ã®ä¸ã« TextNode ã ã ãMIX_FIXEDãã§ãªãå ´åãåé¤ã追å ã親ã«éç¥
+ * HTML ã®ä¸ã« HTML ã ã
+ * HTML ã®ä¸ã¯ MIX -> TextNode, html ã®åé¤ãå¤æ´ã追å
+ * HTML ã®ä¸ã¯ MIX_FIXED -> TextNode ã ã«ç½®ãæãã¦ããã®ã§W3C DON çã«è§¦ããã¨ãã§ãã
+ */
+ if( dirty ){
+ that[ '_flags' ] &= ~X_NodeFlags_IE4_DIRTY_CHILDREN;
+ for( i = 0; i < l; ++i ){
+ if( xnodes[ i ][ '_tag' ] ){
+ that[ '_flags' ] |= X_NodeFlags_IE4_HAS_ELEMENT;
+ } else {
+ that[ '_flags' ] |= X_NodeFlags_IE4_HAS_TEXTNODE;
+ };
+ if( that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_Node_BitMask_IE4_IS_MIX ){
+ mix = true;
+ break;
+ };
};
- if( that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_Node_BitMask_IE4_IS_MIX ){
- mix = true;
- break;
+ };
+
+ if( that[ '_flags' ] & X_NodeFlags_IE4_FIXED || that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_NodeFlags_IE4_HAS_ELEMENT ){
+ for( i = 0; i < l; ++i ){
+ prev = X_Node__commitUpdate( xnodes[ i ], elm, prev, accumulatedFlags );
};
+ } else
+ if( mix ){
+ html = [];
+ for( i = 0; i < l; ++i ){
+ html[ i ] = X_Node__actualCreate( xnodes[ i ], false );
+ };
+ elm.innerHTML = html.join( '' );
+ for( i = 0; i < l; ++i ){
+ X_Node__afterActualCreate( xnodes[ i ] );
+ };
+ that[ '_flags' ] |= X_NodeFlags_IE4_FIXED;
+ } else
+ if( that[ '_flags' ] & X_NodeFlags_IE4_HAS_TEXTNODE ){
+ dirty = dirty || false;
+ for( i = 0; i < l; ++i ){
+ text = xnodes[ i ];
+ if( text[ '_flags' ] & X_Node_BitMask_IS_DIRTY ){
+ text[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;
+ dirty = true;
+ };
+ };
+ if( dirty ) elm.innerHTML = that[ 'text' ]();
};
+
+ if( accumulatedFlags & X_Node_BitMask_IS_DIRTY ) delete that[ '_fontSize' ];
+
+ that[ '_flags' ] &= ~X_NodeFlags_DIRTY_POSITION;
+ that[ '_flags' ] & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm );
};
- if( that[ '_flags' ] & X_NodeFlags_IE4_FIXED || that[ '_flags' ] & X_Node_BitMask_IE4_IS_MIX === X_NodeFlags_IE4_HAS_ELEMENT ){
- for( i = 0; i < l; ++i ){
- prev = X_Node__commitUpdate( xnodes[ i ], elm, prev, accumulatedFlags );
- };
- } else
- if( mix ){
- html = [];
- for( i = 0; i < l; ++i ){
- html[ i ] = X_Node__actualCreate( xnodes[ i ], false );
- };
- elm.innerHTML = html.join( '' );
- for( i = 0; i < l; ++i ){
- X_Node__afterActualCreate( xnodes[ i ] );
- };
- that[ '_flags' ] |= X_NodeFlags_IE4_FIXED;
- } else
- if( that[ '_flags' ] & X_NodeFlags_IE4_HAS_TEXTNODE ){
- dirty = dirty || false;
- for( i = 0; i < l; ++i ){
- text = xnodes[ i ];
- if( text[ '_flags' ] & X_Node_BitMask_IS_DIRTY ){
- text[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;
- dirty = true;
+ if( ( anime = that[ '_anime' ] ) && 6 <= anime.phase && anime.doScroll ){
+ if( anime.phase === 6 ){
+ v = anime.fromScrollX;
+ if( v === v ){
+ elm.scrollLeft = v;
+ } else {
+ anime.fromScrollX = elm.scrollLeft;
+ };
+ v = anime.fromScrollY;
+ if( v === v ){
+ elm.scrollTop = v;
+ } else {
+ anime.fromScrollY = elm.scrollTop;
};
+ } else {
+ elm.scrollLeft = anime.scrollX;
+ elm.scrollTop = anime.scrollY;
};
- if( dirty ) elm.innerHTML = that[ 'text' ]();
};
-
- if( accumulatedFlags & X_Node_BitMask_IS_DIRTY ) delete that[ '_fontSize' ];
-
- that[ '_flags' ] &= ~X_NodeFlags_DIRTY_POSITION;
- that[ '_flags' ] & X_Node_BitMask_IS_DIRTY && X_Node__updateRawNode( that, elm );
+
return elm;
}) :
(function(){});
@@ -1557,22 +1804,39 @@ var X_Node__commitUpdate =
*/
var X_Node__updateRawNode =
X_UA_DOM.W3C ?
- ( function( that, elm ){
- var attrs, rename, k, v;
+ ( function( that, elm, currentOpcity, ie8AccumulatedOpcity, accumulatedFlags ){
+ var // flags = that[ '_flags' ],
+ attrs, rename, k, v, f;
// textNode
if( !that[ '_tag' ] ){
- elm.data = X_String_chrReferanceTo( that[ '_text' ] );
+ if( X_UA[ 'IE' ] < 8 ){
+ // \n -> \r\n ã«å¤æããªã㨠pre ã¿ã°ã§éæ¥ãããªã win10ie7(ie11 emu) ã§ç¢ºèª
+ elm.data = X_String_chrReferanceTo( that[ '_text' ] ).split( '\n' ).join( X_String_CRLF );
+ } else {
+ elm.data = X_String_chrReferanceTo( that[ '_text' ] );
+ };
that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;
return;
};
+
// id
if( that[ '_flags' ] & X_NodeFlags_DIRTY_ID ){
- that[ '_id' ] ? ( elm.id = that[ '_id' ] ) : ( elm.id && elm.removeAttribute( 'id' ) );
+ that[ '_id' ] ?
+ ( ( that[ '_flags' ] & X_NodeFlags_IS_SVG ) ?
+ elm.setAttribute( 'id', that[ '_id' ] ) :
+ ( elm.id = that[ '_id' ] )
+ ) :
+ ( elm.id && elm.removeAttribute( 'id' ) );
};
// className
if( that[ '_flags' ] & X_NodeFlags_DIRTY_CLASSNAME ){
- that[ '_className' ] ? ( elm.className = that[ '_className' ] ) : ( elm.className && elm.removeAttribute( X_UA[ 'IE' ] < 8 ? 'className' : 'class' ) ); // className 㯠ie7-
+ that[ '_className' ] ?
+ ( ( that[ '_flags' ] & X_NodeFlags_IS_SVG ) ?
+ elm.setAttribute( 'class', that[ '_className' ] ) :
+ ( elm.className = that[ '_className' ] )
+ ) :
+ ( elm.className && elm.removeAttribute( X_UA[ 'IE' ] < 8 ? 'className' : 'class' ) ); // className 㯠ie7-
};
// attr
@@ -1585,7 +1849,8 @@ var X_Node__updateRawNode =
switch( that[ '_tag' ] + k ){
case 'TEXTAREAvalue' :
// IETester 5.5 ã§ã¯ã¨ã©ã¼ãåºãªãã£ãï¼MultipulIE5.5 ã§ã¯ã¨ã©ã¼ãåºãã®ã§
- if( !X_UA[ 'MacIE' ] && X_UA[ 'IE5x' ] ){
+ // MultipleIE6 ã§ããããéããX_UA[ 'ieExeComError' ] ã®å ´å MultipleIE6
+ if( ( !X_UA[ 'MacIE' ] && X_UA[ 'IE5x' ] ) || ( X_UA[ 'ieExeComError' ] && X_UA[ 'IE6' ] ) ){
elm.firstChild ?
( elm.firstChild.data = v || '' ) :
elm.appendChild( document.createTextNode( v || '' ) );
@@ -1613,11 +1878,27 @@ var X_Node__updateRawNode =
// TODO IE ã§ã¯ input, ãªãã button, object ã type, name ã®å¤æ´ãåºæ¥ãªããåå¤ã§ç½®ãæãããã¨ãã¦ãä¸å¯
v === undefined ?
elm.removeAttribute( rename[ k ] || k ) :
- ( elm[ rename[ k ] || k ] = X_Node_Attr_noValue[ k ] ? k : v );
+ ( ( that[ '_flags' ] & X_NodeFlags_IS_SVG ) ?
+ elm.setAttribute( k, v ) :
+ ( elm[ rename[ k ] || k ] = X_Node_Attr_noValue[ k ] ? k : v )
+ );
};
delete that[ '_newAttrs' ];
};
+ if( accumulatedFlags & X_NodeFlags_IE8_OPACITY_FIX ){
+ if( 0 <= currentOpcity ){
+ f = true;
+ that[ '_css' ].opacity = ie8AccumulatedOpcity;
+ if( that[ '_flags' ] & X_NodeFlags_DIRTY_CSS ){
+ that[ '_flags' ] |= X_NodeFlags_OLD_CSSTEXT;
+ } else
+ if( !( that[ '_flags' ] & X_NodeFlags_DIRTY_IE_FILTER ) ){
+ that[ '_flags' ] |= X_NodeFlags_DIRTY_IE_FILTER;
+ };
+ };
+ };
+
// style
if( that[ '_flags' ] & X_NodeFlags_DIRTY_CSS ){
if( that[ '_flags' ] & X_NodeFlags_OLD_CSSTEXT ? X_Node_CSS_objToCssText( that ) : that[ '_cssText' ] ){
@@ -1640,6 +1921,15 @@ var X_Node__updateRawNode =
};
};
+ /*
+ * http://jsdo.it/esukei/imOL
+ * IE8ã§ã®filter:alphaç¶æ¿
+ * IE8ã§filter:alphaã®æå®ãposition:relative,position:absoluteã®åè¦ç´ ã«ç¶æ¿ãããªãåé¡
+ */
+ if( f ){
+ that[ '_css' ].opacity = currentOpcity;
+ };
+
that[ '_flags' ] &= X_Node_BitMask_RESET_DIRTY;
}) :
X_UA_DOM.IE4 ?
@@ -1814,7 +2104,7 @@ var X_Node__actualRemove =
that[ '_listeners' ] && X_EventDispatcher_toggleAllEvents( that, false );// ã¤ãã³ãã®éé¿
that[ '_flags' ] &= ~X_NodeFlags_ACTUAL_LISTENING;
};
-
+
// ie5ã§ã¯ filter ã®å¹ãã¦ããè¦ç´ ãremoveæã«ç ´æ£ãã¦ãå度append æã«æ°è¦çæãã
// ã¡ãªã¿ã« elm.filters ã«è§¦ã㨠ie8 ã§ãªããã«ã©ã è½ã¡ãçºçããã
if( X_Node_displayNoneFixForIE5 ){
@@ -1834,7 +2124,7 @@ var X_Node__actualRemove =
if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};
that[ '_attrs' ].selectedIndex = elm.selectedIndex;
};
- if( that[ '_tag' ] === 'INPUT' && that._attr && ( that._attr.type === 'checkbox' || that._attr.type === 'radio' ) && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'checked', that[ '_newAttrs' ] ) ) ){
+ if( that[ '_tag' ] === 'INPUT' && that[ '_attrs' ] && ( that[ '_attrs' ].type === 'checkbox' || that[ '_attrs' ].type === 'radio' ) && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'checked', that[ '_newAttrs' ] ) ) ){
if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};
that[ '_attrs' ].checked = elm.checked;
};
@@ -1877,14 +2167,14 @@ var X_Node__actualRemove =
if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};
that[ '_attrs' ].selectedIndex = elm.selectedIndex;
};
- if( that[ '_tag' ] === 'INPUT' && that._attr && ( that._attr.type === 'checkbox' || that._attr.type === 'radio' ) && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'checked', that[ '_newAttrs' ] ) ) ){
+ if( that[ '_tag' ] === 'INPUT' && that[ '_attrs' ] && ( that[ '_attrs' ].type === 'checkbox' || that[ '_attrs' ].type === 'radio' ) && ( !that[ '_newAttrs' ] || !X_Object_inObject( 'checked', that[ '_newAttrs' ] ) ) ){
if( !that[ '_attrs' ] ) that[ '_attrs' ] = {};
that[ '_attrs' ].checked = elm.checked;
};
elm.removeAttribute( 'id' ); // ?
//document.all[ that[ '_id' ] || ( 'ie4uid' + that[ '_uid' ] ) ] = null; // MacIE5 ã§ã¨ã©ã¼
- if( !isChild ) elm.outerHTML = '';
+ if( !isChild ) elm.outerHTML = ''; // elm.remove() ?
delete that[ '_rawObject' ];
}) :
(function(){});