OSDN Git Service

Version 0.6.38, fix for safari2-.
[pettanr/clientJs.git] / 0.6.x / js / dom / 11_XDomNode.js
index 36a7ffb..1d8733b 100644 (file)
@@ -108,7 +108,7 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                                // X.Dom.Dirty.CSS を落とす\r
                                                this._dirty = 0;\r
                                                // attr の回収は不可能、、、\r
-                                               if( X.UA.IE && X.UA.IE < 5 ){\r
+                                               if( X.Dom.DOM_IE4 ){\r
                                                        v.setAttribute( 'UID', '' + uid );\r
                                                } else {\r
                                                        v.UID = uid;\r
@@ -132,8 +132,10 @@ X.Dom.Node = X.EventDispatcher.inherits(
                                                return Node.none;\r
                                        case Node.IS_IMAGE :\r
                                                v.UID = uid;\r
+                                               this._isImage = true;\r
                                        case Node.IS_WINDOW :\r
                                        case Node.IS_DOCUMENT :\r
+                                               if( xnode = Node._getXNode( v ) ) return xnode;\r
                                                this._rawNode   = v;\r
                                                this._xnodeType = 2;\r
                                                this._state     = X.Dom.State.DISPLAY_BLOCK;\r
@@ -170,6 +172,11 @@ Node._getType = function( v ){
        if( v === window ) return Node.IS_WINDOW;\r
        if( v === document ) return Node.IS_DOCUMENT;\r
        if( v.constructor === window.Image ) return Node.IS_IMAGE;\r
+       if( X.UA.Safari && X.UA.Safari < 3 ){\r
+               if( v.src !== undefined && v.onload !== undefined && X.Type.isNumber( v.height ) && X.Type.isNumber( v.width ) && X.Type.isBoolean( v.complete ) ){\r
+                       return Node.IS_IMAGE;\r
+               };\r
+       };      \r
        if( v.constructor === Node ) return Node.IS_XNODE;\r
        if( v.constructor === X.Dom.NodeList ) return Node.IS_XNODE_LIST;\r
        if( v.tagName ) return Node.IS_RAW_HTML;\r
@@ -189,7 +196,7 @@ Node._getXNode = function( v ){
                case Node.IS_RAW_HTML :\r
                case Node.IS_IMAGE :\r
                        // fake TextNode too.\r
-                       if( X.UA.IE && X.UA.IE < 5 ){\r
+                       if( X.Dom.DOM_IE4 ){\r
                                uid = v.getAttribute( 'UID' );\r
                                return uid && Node._chashe[ uid ];\r
                        };\r
@@ -232,7 +239,7 @@ Node.getRoot = function( xnode ){
 };\r
        // XMLかどうかを判別する\r
 Node.isXmlDocument =\r
-       X.UA.IE && X.UA.IE < 5 ?\r
+       X.Dom.DOM_IE4 ?\r
                X.emptyFunction :\r
                (function( root ){\r
                        return root._rawNode.createElement( 'p' ).tagName !== root._rawNode.createElement( 'P' ).tagName;\r
@@ -1207,7 +1214,8 @@ Node.prototype._afterActualCreate =
                                xnodes[ i ]._afterActualCreate();\r
                        };\r
                };\r
-               \r
+               // src の onload があるので先ではないか?\r
+               // ie の str から要素を作る場合、srcだけ イベント設定後ではないか?\r
                this._restoreEvent();// イベントの復帰\r
        }) :\r
        X.Dom.DOM_IE4 ? (function(){\r