OSDN Git Service

Version 0.6.29, fix for ie5.
authoritozyun <itozyun@user.sourceforge.jp>
Tue, 18 Mar 2014 00:42:29 +0000 (09:42 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Tue, 18 Mar 2014 00:42:29 +0000 (09:42 +0900)
0.6.x/js/dom/10_XDom.js
0.6.x/js/dom/11_XDomDTD.js
0.6.x/js/dom/11_XDomNode.js
0.6.x/js/dom/12_XDomEvent.js
0.6.x/js/dom/13_XDomBoxModel.js
0.6.x/js/dom/15_XDomStyle.js
0.6.x/js/dom/18_XDomQuery.js
0.6.x/js/dom/20_XDomImage.js
0.6.x/js/ui/06_AbstractUINode.js

index 21e77b9..f1acac4 100644 (file)
@@ -1,35 +1,42 @@
 (function( window, document ){\r
        var lock = 0, w = 0, h = 0,\r
-               resize, delayResize;\r
+               resize;\r
 \r
 /* -----------------------------------------------\r
  * Resize\r
- *  uupaa.js\r
+ *  original : uupaa.js\r
  */\r
-       function unlock(){ lock = 0; };\r
-       \r
-       if( X.UA.IE && X.UA.IE < 9 ){\r
-               resize = function(){\r
-                       var size;\r
-                       if( !lock++ ){\r
-                               size = X.Dom.getSize();\r
-                               ( w !== size[ 0 ] || h !== size[ 1 ] ) &&\r
-                                       X.Dom.asyncDispatch( 0, { type : X.Dom.Event.VIEW_RESIZED, w : w = size[ 0 ], h : h = size[ 1 ] } );\r
-                               X.Timer.once( 1, unlock );\r
-                       };\r
-               };\r
-       } else {\r
-               resize = function( e ){\r
-                       !lock++ && X.Timer.once( 40, delayResize );\r
-                       return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
-               };\r
-               delayResize = function(){\r
-                       var size = X.Dom.getSize();\r
-                       ( w !== size[ 0 ] || h !== size[ 1 ] ) &&\r
-                               X.Dom.asyncDispatch( 0, { type : X.Dom.Event.VIEW_RESIZED, w : w = size[ 0 ], h : h = size[ 1 ] } );\r
-                       X.Timer.once( 1, unlock );\r
+       resize =\r
+               X.UA.IE && X.UA.IE < 9 ?\r
+                       (function(){\r
+                               var size;\r
+                               if( !lock ){\r
+                                       size = X.Dom.getSize();\r
+                                       if( w !== size[ 0 ] || h !== size[ 1 ] ){\r
+                                               w = size[ 0 ];\r
+                                               h = size[ 1 ];\r
+                                               X.Timer.once( 100, detectFinishResizing );\r
+                                               lock = true;\r
+                                       };\r
+                               };\r
+                       }) :\r
+                       (function( e ){\r
+                               !lock && ( lock = true ) && X.Timer.once( 40, detectFinishResizing );\r
+                               return X.Callback.PREVENT_DEFAULT | X.Callback.STOP_PROPAGATION;\r
+                       });\r
+\r
+       function detectFinishResizing(){\r
+               var size = X.Dom.getSize();\r
+               if( w !== size[ 0 ] || h !== size[ 1 ] ){\r
+                       w = size[ 0 ];\r
+                       h = size[ 1 ];\r
+                       X.Timer.once( 10, detectFinishResizing );\r
+               } else {\r
+                       X.Dom.asyncDispatch( 0, { type : X.Dom.Event.VIEW_RESIZED, w : w, h : h } );\r
+                       lock = false;\r
                };\r
-       };\r
+       };      \r
+       \r
        \r
        X.Dom = X.Class._override(\r
                new X.EventDispatcher(),\r
                                X.UA.IE ?\r
                                        new Function( 'return[X.Dom._root.clientWidth,X.Dom._root.clientHeight]' ) :\r
                                        new Function( 'return[window.innerWidth,window.innerHeight]' ),\r
+       //https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect\r
+       //use window.pageXOffset and window.pageYOffset instead of window.scrollX and window.scrollY\r
+       //(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollLeft == 'number' ? t : document.body).ScrollLeft;\r
+       //(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollTop == 'number' ? t : document.body).ScrollTop\r
+                       \r
                        getScrollPosition :\r
                                window.pageXOffset !== undefined ?\r
                                        new Function( 'return[window.pageXOffset,window.pageYOffset]' ) :\r
                                        X.Dom._root.scrollWidth  || X.Dom._root.offsetWidth,\r
                                        X.Dom._root.scrollHeight || X.Dom._root.offsetHeight\r
                                ];\r
+                       },\r
+                       // todo\r
+                       getScrollbarSize : function(){\r
+                               return [];      \r
                        }\r
                }\r
        );\r
@@ -118,10 +134,10 @@ X.Dom.cleanupTagNames     = 'noscript,noframes,comment,!,noembed,nolayer'.split(
 X.Dom.skipCleanupTagNames = 'pre,textarea,code,kbd,samp,xmp,plaintext,listing'.split( ',' );\r
                \r
 X.Dom.cleanupWhiteSpace = function( text ){\r
-       var _ = ' ', __ = '  ', c1310 = String.fromCharCode( 13 ) + String.fromCharCode( 10 );\r
+       var _ = ' ', __ = '  ';//, c1310 = String.fromCharCode( 13 ) + String.fromCharCode( 10 );\r
        //text.indexOf( c1310 ) !== -1 && ( text = text.split( c1310 ).join( _ ) );\r
        //text.indexOf( c32 ) !== -1 && ( text = text.split( c32 ).join( _ ) );\r
-       text.indexOf( '\r\n' ) !== -1 && ( text = text.split( '\r\n' ).join( _ ) );\r
+       //text.indexOf( '\r\n' ) !== -1 && ( text = text.split( '\r\n' ).join( _ ) );\r
        text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( _ ) );\r
        text.indexOf( '\t' )   !== -1 && ( text = text.split( '\t' ).join( _ ) );\r
        text.indexOf( '\r' )   !== -1 && ( text = text.split( '\r' ).join( _ ) );\r
index 45068d7..1c45910 100644 (file)
@@ -4,9 +4,9 @@ X.Dom.DTD = {
        \r
        TAG_FIX :\r
                X.UA.IE && 4 <= X.UA.IE && X.UA.IE < 5 ?\r
-                       { CITE : 'U', ABBR : 'U' } :\r
+                       { ABBR : 'acronym', BDO : '', RUBY : '' } :\r
                X.UA.IE && 5 <= X.UA.IE && X.UA.IE < 7 ?\r
-                       { abbr : 'span' } :\r
+                       { ABBR : 'acronym' } :\r
                        {},\r
        \r
        //      video:1,audio:1}\r
index 9ec6353..d2d22c6 100644 (file)
@@ -1,37 +1,34 @@
 \r
 X.Dom.Dirty = {\r
        CLEAN            :  0,\r
-       ID               :  1, // width, height, x, y\r
-       CONTENT          :  2,  // width, height, x, y textNode の内容\r
-       CLASSNAME        :  4, // _getCharSize, width, height, x, y\r
-       CSS              :  8, // _getCharSize, width, height, x, y\r
-       ATTR             : 16,  // _getCharSize, width, height, x, y\r
-       IE_FILTER        : X.UA.IE && X.UA.IE < 9 ? 32 : 0,\r
-       IE4_TEXTNODE_FIX : 64\r
+       CHILD_IS_DIRTY   :  1,\r
+       ID               :  2, // width, height, x, y\r
+       CONTENT          :  4, // width, height, x, y textNode の内容\r
+       CLASSNAME        :  8, // _getCharSize, width, height, x, y\r
+       ATTR             : 16, // _getCharSize, width, height, x, y\r
+       CSS              : 32, // _getCharSize, width, height, x, y\r
+       IE_FILTER        : X.UA.IE && X.UA.IE < 9 ? 64 : 0,\r
+       UNKNOWN_TAG_FIX  : 128,\r
+       IE4_TEXTNODE_FIX : 256\r
 };\r
 \r
-/*\r
- * \r
- *\r
- * destroyed\r
- * display:none\r
- * display:block\r
- * display:inline\r
- * \r
- */\r
+ie55 = 7;\r
 \r
 X.Dom.State = {\r
        DESTROYED          : 0,\r
-       DISPLAY_NONE       : 1,\r
-       DISPLAY_BLOCK      : 2,\r
-       DISPLAY_INLINE     : 4,\r
-       POSITION_ABSOLUTE  : 2,\r
-       OVERFLOW_HIDDEN    : 4,\r
-       HAS_WIDTH_LENGTH   : 8,\r
-       HAS_WIDTH_PERCENT  : 16,\r
-       HAS_HEIGHT_LENGTH  : 16,\r
-       HAS_HEIGHT_PERCENT : 32,\r
-       IE4_ONLY_TEXT      : 64\r
+       EXIST              : 1,\r
+       BELONG_TREE        : 2,\r
+       DISPLAY_NONE       : 4,\r
+       DISPLAY_BLOCK      : 8,\r
+       DISPLAY_INLINE     : 16,\r
+       POSITION_ABSOLUTE  : 32,\r
+       OVERFLOW_HIDDEN    : 64,\r
+       HAS_WIDTH_LENGTH   : 128,\r
+       HAS_WIDTH_PERCENT  : 256,\r
+       HAS_HEIGHT_LENGTH  : 512,\r
+       HAS_HEIGHT_PERCENT : 1024,\r
+       IE4_ONLY_TEXT      : 2048,\r
+       IE5_DISPLAY_NONE_FIX : 5 <= X.UA.IE && X.UA.IE < ie55 ? 4096 : 0\r
 };\r
 \r
 /*\r
@@ -46,6 +43,8 @@ X.Dom.Node = X.EventDispatcher.inherits(
                _state     : 0,\r
                _dirty     : 0,\r
                \r
+               _isNew     : false,\r
+               \r
                _rawNode   : null,\r
                _root      : null, // xnode が文書ツリーに属しているか?はこれを見る\r
                parent     : null, // remove された枝も親子構造は維持している。\r
@@ -717,20 +716,17 @@ Node.prototype.hasClass = function( v ){
 /* --------------------------------------\r
  *  html, text\r
  */\r
+\r
+Node._outerFlag = null;\r
+\r
 Node.prototype.html = function( html ){\r
        var _ = '', xnodes, n, i, l;\r
        // setter\r
-       if( html || html === '' ){\r
-               if( this._xnodeType === 3 ){\r
-                       if( this._text !== html ){\r
-                               this._text = html;\r
-                               this._root && this._reserveUpdate();\r
-                               this._dirty |= X.Dom.Dirty.CONTENT;\r
-                       };\r
-                       return this;\r
-               };\r
-               return this.empty().append.apply( this, X.Dom.parse( html, true ) );\r
+       if( X.Type.isString( html ) ){\r
+               if( this._xnodeType === 3 ) return this.text( html );\r
+               return html ? this.empty().append.apply( this, X.Dom.parse( html, true ) ) : this.empty();\r
        };\r
+       \r
        // getter\r
        if( this._xnodeType === 3 ){\r
                return this._text;\r
@@ -739,9 +735,9 @@ Node.prototype.html = function( html ){
        if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                delete this._cssText;\r
        };\r
-       html = !Node._needOuter ? [] : [\r
+       html = !Node._outerFlag ? [] : [\r
                '<', this._tag,\r
-               this._id ? ' id=' + this._id : _,\r
+               this._id ? ' id="' + this._id + '"' : _,\r
                this._className ? ' class="' + this._className + '"' : _,\r
                this._attrText || ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ),\r
                this._cssText ? ' style="' + this._cssText + '"' : _,\r
@@ -749,32 +745,31 @@ Node.prototype.html = function( html ){
        \r
        n = html.length;\r
        if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
-               Node._needOuter = true;\r
+               if( !Node._outerFlag ) Node._outerFlag = this;\r
                for( i = 0; i < l; ++i ){\r
-                       html[ n ] = xnodes[ i ].html( undefined );\r
+                       html[ n ] = xnodes[ i ].html();\r
                        ++n;\r
                };\r
-               Node._needOuter = false;\r
+               if( Node._outerFlag === this )  Node._outerFlag = null;\r
        };\r
-       !Node._needOuter || X.Dom.DTD.EMPTY[ this._tag.toLowerCase() ] || ( html[ n ] = '<\/' + this._tag + '>' );\r
-\r
+       !Node._outerFlag || X.Dom.DTD.EMPTY[ this._tag.toLowerCase() ] || ( html[ n ] = '<\/' + this._tag + '>' );\r
        return html.join( _ );\r
 };\r
 \r
 Node.prototype.text = function( text ){\r
        var xnodes, texts, i, l;\r
        // setter\r
-       if( text || text === '' ){\r
+       if( X.Type.isString( text ) ){\r
                if( this._xnodeType === 3 ){\r
                        if( this._text !== text ){\r
-                               this._text = text;\r
+                               text ? ( this._text = text ) : delete this.text;\r
                                this._root && this._reserveUpdate();\r
                                this._dirty |= X.Dom.Dirty.CONTENT;\r
                        };\r
                        return this;\r
                };\r
-               this.empty().createText( text );\r
-               return this;    \r
+               text ? this.empty().createText( text ) : this.empty();\r
+               return this;\r
        };\r
        // getter\r
        if( this._xnodeType === 1 ){\r
@@ -854,13 +849,18 @@ Node.prototype._commitUpdate =
                        var elm = this._rawNode,\r
                                xnodes, l, i, frg, next, k, v;\r
 \r
+                       if( this._state & X.Dom.State.IE5_DISPLAY_NONE_FIX ){\r
+                               //alert( this._tag + ' ' + !!elm );\r
+                               elm && elm.parentNode && elm.parentNode.removeChild( elm );\r
+                               return nextElement;\r
+                       };\r
+\r
                        if( !elm || ( parentElement && elm.parentNode !== parentElement ) || ( nextElement && elm.nextSibling !== nextElement ) ){\r
                                nextElement ?\r
                                        parentElement.insertBefore( this._actualCreate(), nextElement ) :\r
                                        parentElement.appendChild( this._actualCreate() );\r
                                this._afterActualCreate();\r
-                               \r
-                               \r
+\r
                                return elm || this._rawNode;\r
                        } else\r
                        if( ( xnodes = this._xnodes ) && ( l = xnodes.length ) ) {\r
@@ -942,7 +942,7 @@ Node.prototype._updateRawNode =
                        // id\r
                        if( this._dirty & X.Dom.Dirty.ID ){\r
                                if( X.UA.IE && X.UA.IE < 7 ){\r
-                                       elm.id = this._id;\r
+                                       this._id ? ( elm.id = this._id ) : ( elm.id && elm.removeAttribute( 'id' ) );           \r
                                } else {\r
                                        this._id ? ( elm.id = this._id ) : elm.removeAttribute( 'id' );                                 \r
                                };\r
@@ -951,6 +951,11 @@ Node.prototype._updateRawNode =
                        if( this._dirty & X.Dom.Dirty.CLASSNAME ){\r
                                if( X.UA.IE && X.UA.IE < 7 ){\r
                                        elm.className = this._className;\r
+                                       // ie5 only\r
+                                       if( X.Dom.State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){\r
+                                               elm.parentNode.removeChild( elm );\r
+                                               this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX;\r
+                                       };\r
                                } else {\r
                                        this._className ? ( elm.className = this._className ) : elm.removeAttribute( 'class' );                                 \r
                                };\r
@@ -959,6 +964,7 @@ Node.prototype._updateRawNode =
                        if( this._dirty & X.Dom.Dirty.CSS ){\r
                                if( this._cssText || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
                                        elm.style.cssText = this._cssText;\r
+                                       //elm.setAttribute( 'style', this._cssText );\r
                                } else {\r
                                        elm.style.cssText = ''; // IE5.5以下 Safari3.2 で必要\r
                                        elm.removeAttribute( 'style' );\r
@@ -967,14 +973,14 @@ Node.prototype._updateRawNode =
                        };\r
                        \r
                        if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
-                               this._rawNode.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
+                               elm.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
-                                       if( 5 <= X.UA.IE && X.UA.IE < 5.5 ){\r
+                                       if( 5 <= X.UA.IE && X.UA.IE < 6 ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので\r
                                                if( this._tag === 'TEXTAREA' && k === 'value' ){\r
                                                        elm.firstChild ?\r
                                                                ( elm.firstChild.data = attrs[ k ] ) :\r
@@ -1077,7 +1083,7 @@ Node.prototype._actualCreate =
                        };\r
                        this._isNew = true;\r
                        this._rawNode = elm =\r
-                               X.UA.IE && X.UA.IE < 9 ?\r
+                               ie55 <= X.UA.IE && X.UA.IE < 9 ?\r
                                        document.createElement( [\r
                                                '<', this._tag,\r
                                                        ' UID="', this._uid, '"',\r
@@ -1085,7 +1091,7 @@ Node.prototype._actualCreate =
                                                        this._className ? ' class="' + this._className + '"' : '',\r
                                                        this._attrText || ( this._attrText = X.Dom.Attr.objToAttrText( this._attrs ) ),\r
                                                        this._cssText ? ' style="' + this._cssText + '"' : '',\r
-                                               '>' ].join( '' ) ):\r
+                                               '>' ].join( '' ) ) :\r
                                        document.createElement( this._tag );\r
                };\r
                if( Node._useDocumentFragment ){\r
@@ -1164,7 +1170,11 @@ Node.prototype._afterActualCreate =
                                        elm.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                };\r
                        };\r
-                       if( !X.UA.IE || 8 < X.UA.IE ){\r
+                       //if( X.UA.IE && X.UA.IE < 5.5 ){\r
+                       //      this._dirty = X.Dom.Dirty.CSS | X.Dom.Dirty.IE_FILTER;\r
+                       //      this._updateRawNode( elm );\r
+                       //} else\r
+                       if( !X.UA.IE || X.UA.IE < ie55 || 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 | X.Dom.Dirty.IE_FILTER;\r
index e8946eb..d945617 100644 (file)
@@ -96,7 +96,7 @@ if( window.addEventListener ){
                        \r
                        // DOMAssistant 2.8.1\r
                        //event.pageX = DOMAssistant.def(e.pageX)? e.pageX : (event.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0));\r
-                       //event.pageY = DOMAssistant.def(e.pageY)? e.pageY : (event.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0));                                     \r
+                       //event.pageY = DOMAssistant.def(e.pageY)? e.pageY : (event.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0));                                                     \r
                };\r
                \r
 \r
@@ -619,21 +619,23 @@ X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
        r._xnodes = xnodes = [];\r
        // body の属性値の取得\r
 \r
-       Node.skipCreate = true;\r
        /*\r
         * http://support.microsoft.com/kb/812417/ja\r
         * PRB: outerHTML の HTML 要素のプロパティは、既定の属性は表示されません。\r
         * \r
         * body.innerHTML でなく、 body.outerHTML にはできなかった、、、\r
         */\r
+       //var t = X.getTime();\r
        xnodes.push.apply( xnodes, X.Dom.parse( body.innerHTML, true ) );\r
-       delete Node.skipCreate;\r
+       //alert( X.getTime() - t );\r
        \r
        //alert(body.innerHTML);\r
        \r
        //alert(r.html());\r
        \r
+       //t = X.getTime();\r
        createTree( r, body.childNodes || body.children );\r
+       //alert( X.getTime() - t );\r
        \r
        i = xnodes.length;\r
        Node._systemNode = s = r.create( 'div' ).className( 'hidden-sysyem-node' );\r
@@ -643,7 +645,9 @@ X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
        \r
        r.appendAt( 0, Node._systemNode, Node._fontSizeNode );\r
        \r
+       //t = X.getTime();\r
        r._startUpdate();\r
+       //alert( X.getTime() - t );\r
        \r
        //xnodes.splice( xnodes.indexOf( s ), 1 ); // hide from api user\r
        \r
index 5a2b983..e658770 100644 (file)
@@ -36,11 +36,16 @@ X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
  *  display:none なら 0\r
  */\r
 Node.prototype.width = function(){\r
-       if( !this.parent ){\r
+       if( !this.parent ){// todo : _state で tree に所属しているか?判定\r
                console.log( 'xnode.width() : no parent' );\r
                return 0;\r
        };\r
        Node.root._updateTimerID && Node.root._startUpdate();\r
+       if( !this._root ){\r
+               console.log( 'xnode.width() : not belong tree.' );\r
+               return 0;\r
+       };\r
+       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
        if( document.getElementById ){\r
                // this.css( X.Dom.Style.Unit.px, 'width' );\r
                return this._rawNode.offsetWidth;\r
@@ -58,6 +63,11 @@ Node.prototype.height = function(){
                return 0;\r
        };\r
        Node.root._updateTimerID && Node.root._startUpdate();\r
+       if( !this._root ){\r
+               console.log( 'xnode.height() : not belong tree.' );\r
+               return 0;\r
+       };\r
+       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
        if( document.getElementById ){\r
                // this.css( X.Dom.Style.Unit.px, 'height' );\r
                return this._rawNode.offsetHeight;\r
@@ -83,6 +93,11 @@ Node.prototype.x = function(){
                return 0;\r
        };\r
        Node.root._updateTimerID && Node.root._startUpdate();\r
+       if( !this._root ){\r
+               console.log( 'xnode.x() : not belong tree.' );\r
+               return 0;\r
+       };\r
+       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
        if( document.getElementById ){\r
                // this.css( X.Dom.Style.Unit.px, 'left' );\r
                // this.css( X.Dom.Style.Unit.px, 'translateX' );\r
@@ -101,6 +116,11 @@ Node.prototype.y = function(){
                return 0;\r
        };\r
        Node.root._updateTimerID && Node.root._startUpdate();\r
+       if( !this._root ){\r
+               console.log( 'xnode.y() : not belong tree.' );\r
+               return 0;\r
+       };\r
+       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
        if( document.getElementById ){\r
                // this.css( X.Dom.Style.Unit.px, 'top' );\r
                // this.css( X.Dom.Style.Unit.px, 'transisitonY' );\r
index 5fac239..7cb0410 100644 (file)
@@ -142,7 +142,7 @@ _GRNERAL
                                css[ ++n ] = [ VENDER_PREFIX[ name ] || name, obj[ p ] ].join( ':' );
                        };
                };
-               sp && ( css[ ++n ] = SPECIAL_FIX( obj ) );
+               sp && ( css[ ++n ] = 'filter:' + SPECIAL_FIX( obj ) );
                return css.join( ';' );
        },
        
@@ -963,7 +963,12 @@ X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */
                        if( ieFix[ p ] ){
                                this._dirty |= X.Dom.Dirty.IE_FILTER;
                        };
-                       css[ camelize( p ) ] = nameOrObj[ p ];
+                       v = nameOrObj[ p ];
+                       v || v === 0 ? css[ camelize( p ) ] = v : delete css[ camelize( p ) ];
+                       if( p === 'display' ){
+                               v === 'none' ? ( this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX ) : ( this._state &= ~X.Dom.State.IE5_DISPLAY_NONE_FIX );
+                               v === 'none' ? ( this._state |= X.Dom.State.DISPLAY_NONE ) : ( this._state &= ~X.Dom.State.DISPLAY_NONE );
+                       };
                };
                this._dirty |= X.Dom.Dirty.CSS;
                this.parent && this._reserveUpdate();
@@ -979,7 +984,7 @@ X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */
                        if( css[ name ] === v ) return this;
                        if( X.Dom.Style.IE_FILTER_FIX[ name ] ){
                                this._dirty |= X.Dom.Dirty.IE_FILTER;
-                       };                      
+                       };
                        if( !v && v !== 0 ){
                                delete css[ name ];
                        } else {
@@ -987,7 +992,11 @@ X.Dom.Node.prototype.css = function( nameOrObj /* orUnitID, valuOrUnitOrName */
                        };
                        delete this._cssText;
                        this._dirty |= X.Dom.Dirty.CSS;
-                       // parent でなく this._root!
+                       if( name === 'display' ){
+                               v === 'none' ? ( this._state |= X.Dom.State.IE5_DISPLAY_NONE_FIX ) : ( this._state &= ~X.Dom.State.IE5_DISPLAY_NONE_FIX );
+                               v === 'none' ? ( this._state |= X.Dom.State.DISPLAY_NONE ) : ( this._state &= ~X.Dom.State.DISPLAY_NONE );
+                       };
+                       // parent でなく this._root! でなくて this._state & in tree
                        this.parent && this._reserveUpdate();
                        return this;
                };
@@ -1019,6 +1028,10 @@ X.Dom.Node.prototype.cssText = function( v ){
                };
                return this.css( obj );
        };
+       // getter
+       if( this._dirty & X.Dom.Dirty.CSS && !( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){
+               delete this._cssText;
+       };
        return this._cssText;
 };
 
@@ -1092,7 +1105,7 @@ X.Dom.Node.prototype._getCharSize =
 
 
 X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT, function(){
-       var testStyle = X.Dom._root;
+       var testStyle = X.Dom._root.style;
        
        X.Dom.Style.VENDER_PREFIX = (function(){
                var ret       = {},
index 9874d3c..d8c9533 100644 (file)
@@ -205,11 +205,11 @@ X.Dom.Query._parse = function( query, last ){
 };\r
 \r
        // セレクター\r
-       X.Dom.find = X._shortcut = Node.prototype.find = function( queryString ){\r
+       X.Dom.find = X._shortcut = Node.prototype.find = X.Dom.NodeList.prototype.find = function( queryString ){\r
                var HTML      = Node._html,\r
                        scope     = this.cnstructor === X.Dom.NodeList && this.length ? this : [ this.cnstructor === Node ? this : Node.root ],\r
                        parents   = scope, // 探索元の親要素 XNodeList の場合あり\r
-                       noLower   = 'title id name class for href src',\r
+                       noLower   = 'title id name class for ' + X.Dom.DTD.ATTR_VAL_IS_URI.join( ' ' ),\r
                        ARY_PUSH  = Array.prototype.push,\r
                        ret       = [], // 結果要素\r
                        root      = X.Dom.Node.getRoot( scope[ 0 ] ),\r
index 469abde..7de759a 100644 (file)
@@ -1,5 +1,4 @@
 \r
-\r
 X.Dom.Image = {\r
        _actualSize : {},\r
        \r
@@ -180,6 +179,3 @@ X.Dom.Image = {
                }\r
        )\r
 };\r
-\r
-\r
-\r
index 7bebfa4..65bfd49 100644 (file)
@@ -471,7 +471,7 @@ var _AbstractUINode = X.EventDispatcher.inherits(
                                if( this.boxWidth === AUTO ){\r
                                        paddingR = calc( styles[ X.Css.AttrNo.padding + 1 ], contentW );                                        \r
                                        paddingL = calc( styles[ X.Css.AttrNo.padding + 3 ], contentW );                                        \r
-                                       borderR  = styles[ X.Css.AttrNo.border + 1 ];                                   \r
+                                       borderR  = styles[ X.Css.AttrNo.border + 1 ];\r
                                        borderL  = styles[ X.Css.AttrNo.border + 3 ];\r
                                        contentPlus = 0;\r
                                        switch( box ){\r