WSHで画像サイズを取得したいがそんなメソッド当然ない。ブラウザなら画像本来のサイズを表すプロパティであるnaturalWidthとnaturalHeightというのを使って出来るそうな。よしこれを応用してやってみよう。
document = new ActiveXObject("htmlfile"); document.write("<html><head></head><body id='content'></body></html>"); var img = document.createElement("img"); img.src = path; img.id = "image"; document.getElementById("content").appendChild(img); var imgobj = document.getElementById("image"); alert(imgobj.naturalWidth);
うむ、上手くいかない。naturalWidthはundefinedと言われる。おかしい所は何もないはずだと思うんだけど。よく調べてみるとこのプロパティは古いIEでは動かないらしい。なるほど。では例によってこうしてみよう。
document.write("<html><head><meta http-equiv='X-UA-Compatible' content='IE=edge'></head><body id='content'></body></html>");
よし、undefinedは出なくなった。0が帰ってくるがこれは画像のロードが終わらないうちに読みに行ったからだろう。こんな感じでwaitをかければいいだろう。
var start = new Date(); while (imgobj.naturalWidth==0 && new Date().getTime()-start.getTime()<3000) { };
これで画像サイズが取得出来る。タイムアウトを3秒にしてみたがたぶんこんなにいらない。めでたしめでたし。