2 var X_Util_Image_actualSize = {};
\r
5 getActualDimension : X_Util_Image_getActualDimension
\r
7 // Alpha Image, data uri ong ...
\r
11 * Opacity不可 NetFront3.4
\r
17 * AUTHOR: uupaa.js@gmail.com
\r
19 function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){
\r
20 var xnode, img, remove, ret, run, memW, memH, w, h;
\r
22 if( X.Type.isString( XnodeOrImageElemOrSrc ) ){
\r
23 if( ret = X_Util_Image_actualSize[ X_URL_toAbsolutePath( XnodeOrImageElemOrSrc ) ] ) return ret;
\r
25 xnode = X_Node_systemNode.create(
\r
28 src : XnodeOrImageElemOrSrc
\r
31 position : 'absolute'
\r
34 X_Node_startUpdate();
\r
35 img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode ) : xnode._rawObject;
\r
38 if( XnodeOrImageElemOrSrc.constructor === X.Node ){
\r
39 xnode = XnodeOrImageElemOrSrc;
\r
40 img = X_UA_DOM.IE4 ? X_Node__ie4getRawNode( xnode )._rawObject : xnode._rawObject;
\r
42 if( X.Type.isHTMLElement( XnodeOrImageElemOrSrc ) ){
\r
43 img = XnodeOrImageElemOrSrc;
\r
45 if( XnodeOrImageElemOrSrc.constructor === X.EventDispatcher && X.Type.isImage( XnodeOrImageElemOrSrc._rawObject ) ){
\r
46 xnode = XnodeOrImageElemOrSrc;
\r
47 img = xnode._rawObject;
\r
51 if( ret = X_Util_Image_actualSize[ img.src ] ) return ret;
\r
54 // for Firefox, Safari, Google Chrome
\r
55 if( img.naturalWidth ) return [ img.naturalWidth, img.naturalHeight ];
\r
57 if( 5 <= X_UA.IE ){// for IE
\r
58 run = img.runtimeStyle;
\r
62 // keep runtimeStyle
\r
65 run.height = 'auto';
\r
71 } else {// for Opera and Other
\r
73 memW = w = img.width;
\r
74 memH = h = img.height;
\r
76 if( img.removeAttribute ){ // Safari1.3 の Image は removeAttribute がない
\r
77 // keep current style
\r
78 img.removeAttribute( 'width' );
\r
79 img.removeAttribute( 'height' );
\r
90 ret = X_Util_Image_actualSize[ img.src ] = [ w, h ];
\r
92 remove && xnode.destroy();
\r