JavaScript/jQuery で元画像ファイルのサイズの取得
次のコードを考えましたが、動作が不確定な点があります。状況と対応方策をお教えください。
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="subf/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
var pW;
var pH;
$(function() {
newImg();
alert(pW);
alert(pH);
});
function newImg() {
var newImg = new Image();
newImg.src = 'subf/' + "HighJinks_Ni.jpg";
alert("New Image"); //この行をコメントとすると pW=0,pH=0 となる。
pW=(newImg.width);
pH=(newImg.height);
}
</script>
</head>
<body>
</body>
</html>
上のコードで画像のwidth とheight の値が得られるのですが、alert("New Image"); の行をコメントとすると、正確な値得られず0となります。
対応の方法をお教えください。
No.3ベストアンサー
- 回答日時:
ANo1です。
Imageオブジェクトにonloadイベントを設定できるみたいなので、こんなのでもいけると思います。
$(function() {
var newImg = new Image();
newImg.onload = function() { alert("width=" + newImg.width + " height=" + newImg.height); };
newImg.src = 'subf/' + "HighJinks_Ni.jpg";
});
(質問タイトルがjqueryなので、一応使ってますが、必要性はないですね)
No.5
- 回答日時:
コメントだけ。
>#3 Imageオブジェクトにonloadイベントを
imgのonloadはキャッシュの関係(というかIEのせい)で残念な事にアテにできないです。
http://www.keyframe.co.jp/blog/archives/418
No.4
- 回答日時:
内容としては、No1さんの通りですね。
読み込む画像が複数ある場合は、下記を参考にするといいかもしれません。
JavaScript Image Preloader
http://www.webreference.com/programming/javascri …
No.2
- 回答日時:
全角空白は半角空白になおしてね
<script type="text/javascript">
$(function(){
var pW,pH;
var newimg=newImg();
var timer = setInterval(function(){
if(newimg.complete){
pW=(newimg.width);
pH=(newimg.height);
complete();
clearInterval(timer);
}
},100);
function complete(){
alert(pW);
alert(pH);
}
});
function newImg() {
newImg = new Image();
newImg.src = 'subf/' + "HighJinks_Ni.jpg";
return newImg;
}
</script>
No.1
- 回答日時:
>alert("New Image"); の行をコメントとすると、正確な値得られず0となります
画像を読込むのみ多少の時間がかかる場合、読み込み終了前にサイズを取得しようとすればundifinedや0が返ってくると予想できます。
(alertを実行させると、それが時間稼ぎになっている)
画像の読み込みが終了したかを確認してから、サイズを取得すればよろしいかと。
参考の記述は以下に
http://naruken.cweb.tk/labo/java/view4.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
jslintのエラーについて質問
-
function(e)の意味を教えてくだ...
-
idを使わずにonclickで自身の要...
-
functionから別のfunctionを実...
-
関数名をテキストから読み込む...
-
if文等のブロック内での関数宣...
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
onchangeイベントを使ってspan...
-
同じIDで定義した要素の配列を...
-
1日1回引けるJavaScriptおみく...
-
Click回数を数え、規定された回...
-
canvas上で画像を移動する方法...
-
C# .NET DataGridView の行を追...
-
var_dumpのdump意味はを知りた...
-
googleスプレッドシートのApps ...
-
javascriptで文字挿入でtoggle...
-
javascript 特定のタグのidの存...
-
GASでundefinedエラーが出ます
-
FireFoxのjavascriptで自動でキ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
functionから別のfunctionを実...
-
idを使わずにonclickで自身の要...
-
関数でy=g(x)のgとは何の略です...
-
jslintのエラーについて質問
-
jQueryの :not() .not() が有効...
-
クリックすると上に開くアコー...
-
jQueryのプラグイン「Skitter」...
-
関数名をテキストから読み込む...
-
小数点以下を5刻みで表示
-
XMLHttpRequestでキャッシュを...
-
jQueryでzipを解凍読み込みする...
-
Matlabで自作関数をオーバーロード
-
javascript(jQuery)でセル内...
-
要素名がスペースを含む場合のj...
-
ページ内に複数表がある場合のT...
-
処理前の「お待ちください」
-
JS 頭文字が大文字について
-
HTML5でファイルドラッグ&ドロ...
-
Javascriptリアルタイムエラー...
-
getElementByIdを使用したグロ...
おすすめ情報