* \r
*/\r
\r
-var X_Net_Image_hasImage = !!window[ 'Image' ];\r
+var X_Net_Image_hasImage = !!window[ 'Image' ],\r
+ X_Net_Image_image = X_Net_Image_hasImage && new window[ 'Image' ](),\r
+ X_Net_Image_isElement = X.Type.isHTMLElement( X_Net_Image_image );\r
+ \r
\r
if( !X_Net_Image_hasImage ){\r
alert( 'no Image!' );\r
* new Image() のときに Image オブジェクトを作るもの(IE8-)と、HTMLImageElement を作るものがある。\r
* Image は、X.EventDispatcher で、<img> は X.Dom.Node で。\r
*/\r
-X_NET_ImageWrapper = ( X_Net_Image_hasImage ? X.EventDispatcher : X.Dom.Node ).inherits(\r
+X_NET_ImageWrapper = ( !X_Net_Image_isElement ? X.EventDispatcher : X.Dom.Node ).inherits(\r
'X.Net.Image',\r
X.Class.POOL_OBJECT,\r
{\r
- _rawObject : X_Net_Image_hasImage && new Image,\r
+ _rawObject : X_Net_Image_image,\r
\r
tick : 0,\r
timerID : 0,\r
finish : false,\r
- abspath : null,\r
- delay : null,\r
+ abspath : '',\r
+ delay : 0,\r
timeout : 0,\r
\r
Constructor : X_Net_Image_hasImage ?\r
(function(){\r
- this.listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.KILL_INSTANCE ] );\r
+ this.listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.TIMEOUT, X.Event.KILL_INSTANCE ] );\r
}) :\r
(function(){\r
this.SuperConstructor( document.createElement( 'img' ) )\r
.appendTo( X.Dom.Node._systemNode )\r
- .listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.KILL_INSTANCE ] );\r
+ .listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.TIMEOUT, X.Event.KILL_INSTANCE ] );\r
}),\r
\r
load : function( abspath, opt_delay, opt_timeout ){\r
this.timerID = this.asyncDispatch( 0, { type : X.Event.ERROR } );\r
return;\r
};\r
- size = X.Dom.Image.getActualDimension( X.UA.IE < 9 && X_Net_Image_hasImage ? this.abspath : this );\r
+ size = X.Dom.Image.getActualDimension( !X_Net_Image_isElement ? this.abspath : this );\r
this.timerID = this.asyncDispatch( 0, {\r
type : X.Event.SUCCESS,\r
src : this.abspath,\r
break;\r
case X.Event.SUCCESS :\r
case X.Event.ERROR :\r
+ case X.Event.TIMEOUT :\r
this.timerID && X.Timer.remove( this.timerID );\r
this.timerID = this.asyncDispatch( 0, X.Event.COMPLETE );\r
break;\r
case X.Event.KILL_INSTANCE :\r
- this.timerID && X.Timer.remove( this.timerID );\r
+ this.reset();\r
!X_Net_Image_hasImage && this.destroy(); // if xnode\r
this.unlisten();\r
break;\r
this.timerID && X.Timer.remove( this.timerID );\r
this.timerID = 0;\r
this.finished = false;\r
- this.abspath = null; \r
+ this.abspath = '';\r
}\r
}\r
);\r