2 var X_Util_Image_actualSize = {};
\r
5 getActualDimension : X_Util_Image_getActualDimension
\r
7 // Alpha Image, data uri ong ...
\r
13 * AUTHOR: uupaa.js@gmail.com
\r
15 function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){
\r
16 var xnode, img, remove, ret, run, memW, memH, w, h;
\r
18 if( X.Type.isString( XnodeOrImageElemOrSrc ) ){
\r
19 if( ret = X_Util_Image_actualSize[ X_URL_toAbsolutePath( XnodeOrImageElemOrSrc ) ] ) return ret;
\r
21 xnode = X_Node_systemNode.create(
\r
24 src : XnodeOrImageElemOrSrc
\r
27 position : 'absolute'
\r
30 X_Node_startUpdate();
\r
31 img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode._rawObject;
\r
34 if( XnodeOrImageElemOrSrc.constructor === X.Node ){
\r
35 xnode = XnodeOrImageElemOrSrc;
\r
36 img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )._rawObject : xnode._rawObject;
\r
38 if( X.Type.isHTMLElement( XnodeOrImageElemOrSrc ) ){
\r
39 img = XnodeOrImageElemOrSrc;
\r
41 if( XnodeOrImageElemOrSrc.constructor === X.EventDispatcher && X.Type.isImage( XnodeOrImageElemOrSrc._rawObject ) ){
\r
42 xnode = XnodeOrImageElemOrSrc;
\r
43 img = xnode._rawObject;
\r
47 if( ret = X_Util_Image_actualSize[ img.src ] ) return ret;
\r
50 // for Firefox, Safari, Google Chrome
\r
51 if( img.naturalWidth ) return [ img.naturalWidth, img.naturalHeight ];
\r
53 if( 5 <= X_UA.IE ){// for IE
\r
54 run = img.runtimeStyle;
\r
58 // keep runtimeStyle
\r
61 run.height = 'auto';
\r
67 } else {// for Opera and Other
\r
69 memW = w = img.width;
\r
70 memH = h = img.height;
\r
72 if( img.removeAttribute ){ // Safari1.3 の Image は removeAttribute がない
\r
73 // keep current style
\r
74 img.removeAttribute( 'width' );
\r
75 img.removeAttribute( 'height' );
\r
86 ret = X_Util_Image_actualSize[ img.src ] = [ w, h ];
\r
88 remove && xnode.destroy();
\r