X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=0.6.x%2Fjs%2F01_dom%2F20_XDomImage.js;h=d1d417f0f1a6d6277363fde6ea5e77fe70f8e1fd;hb=48057de05a25c032861e9f989a5c93baaf290d93;hp=e3ba959bab3b96a2614e89ed5b70d5a8f9bebbc5;hpb=75567e2d410304d24a0240ad9feaf9482c0d7006;p=pettanr%2FclientJs.git diff --git a/0.6.x/js/01_dom/20_XDomImage.js b/0.6.x/js/01_dom/20_XDomImage.js index e3ba959..d1d417f 100644 --- a/0.6.x/js/01_dom/20_XDomImage.js +++ b/0.6.x/js/01_dom/20_XDomImage.js @@ -100,19 +100,20 @@ X.Dom.Image = { abspath : null, delay : null, timeout : 0, + Constructor : function( abspath, delay, timeout ){ var img; - + this.abspath = abspath; this.delay = delay || 100; this.timeout = timeout || 10000; this.xnode = ( window[ 'Image' ] ? - X.Dom.Node( img = new Image() ) : + X.EventDispatcher( img = new Image() ) : X.Dom.Node._systemNode.create( 'img', { src : abspath } ) ) - .listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR ], this ); + .listen( [ 'load', 'error', 'abort', X.Event.SUCCESS, X.Event.ERROR, X.Event.KILL_INSTANCE ], this ); img && ( img.src = abspath ); this._detect(); }, @@ -134,7 +135,7 @@ X.Dom.Image = { this.timerID = this.asyncDispatch( 0, { type : X.Event.ERROR } ); return; }; - size = X.Dom.Image.getActualDimension( X.UA.IE && X.UA.IE < 9 && window.Image ? this.abspath : this.xnode ); + size = X.Dom.Image.getActualDimension( X.UA.IE < 9 ? this.abspath : this.xnode ); this.timerID = this.asyncDispatch( 0, { type : X.Event.SUCCESS, src : this.abspath, @@ -147,6 +148,11 @@ X.Dom.Image = { delete this.timerID; X.Timer.once( 0, this, this.kill ); break; + case X.Event.KILL_INSTANCE : + this.timerID && X.Timer.remove( this.timerID ); + this.xnode.destroy && this.xnode.destroy(); + this.unlisten(); + break; }; }, _detect : function(){ @@ -169,11 +175,6 @@ X.Dom.Image = { // this.dispacth( { type : X.Event.CANCELED } ); this.kill(); - }, - onKill : function(){ - this.timerID && X.Timer.remove( this.timerID ); - this.xnode.destroy(); - this.unlisten(); } } )