質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2718閲覧

iOS Chrome ver49.0.2623.109において、JSの一部が実行されない

katsuo_isono

総合スコア63

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/04/05 08:10

編集2016/04/06 01:06

内容
Javascriptで、「現在画面に表示されている画像のwidth」と
「元画像のwidthを比較するコード」を書いています。
クロスブラウザに対応するため、一旦新しいImageオブジェクトを生成し、
元画像のsrcからwidthを引っ張ってきています。
関数img_width_checkは、window.load時に実行されます。
問題のコードは以下の通りです。

Javascript

1function img_width_check(main_img){ 2 //現在表示されているwindow上の画像のwidth 3 var width =document.getElementById(main_img).width; 4 5 //元画像のサイズを取得 6 var img = new Image(); 7 img.src = document.getElementById(main_img).src; 8 var img_width = img.width; 9 var img_height = img.height; 10 11 alert(img_width); 12 alert(img_height); 13} 14

問題
iOS Chrome ver49.0.2623.109で上記のコードを実行した場合、
img.srcの値は正しく取得できるのですが、img_widthとimg_heightがどちらも0になります。
Safari、Sleipnir、LunaScapeなどの他ブラウザやPC版のChromeなどでテストをしてみましたが、
どれも正常に値を取得できていました。

解決策や改善コードがあれば是非教えて頂きたいです。
よろしくお願いいたします。

追記
JSは外部ファイルではなく、直接HTMLのbody内で処理を行っています。
その際、window.load=function(){}で関数を呼び出しています。

HTML

1<script type="text/javascript"> 2 3window.onload = function(){ 4 img_width_check(main_img);//画像のid 5} 6 7function img_width_check(main_img){ 8 //現在表示されているwindow上の画像のwidth 9 var width =document.getElementById(main_img).width; 10 11 //元画像のサイズを取得 12 var img = new Image(); 13 img.src = document.getElementById(main_img).src; 14 var img_width = img.width; 15 var img_height = img.height; 16 17 alert(img_width); 18 alert(img_height); 19} 20</script>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

iOS9.2.1 iPhone5s Chrome 49.0.2623.109で検証しましたが、問題なくサイズが取得できました。
HTMLの部分が不明でしたので以下のコードでやっています。
(あえて大きな画像を読み込んでいます)
http://jsdo.it/mattari_panda/aEu8

ですので明確な解答になるかわかりませんが、こちらのコードのように一度imgのload後に
サイズを取得してみてはいかがでしょうか。
http://jsdo.it/mattari_panda/INwf

投稿2016/04/05 10:52

mattari_panda

総合スコア429

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsuo_isono

2016/04/06 01:03

ご回答ありがとうございます。 直接HTML内にwindow.load=function(){}の記述をしていて、チェックの関数を呼び出しているのですが、やはり現象が残ったままですね… もしやと思い、表示する画像より下にJSのコードを書いてみましたが、やはりChromeだけ不可でした。 Chromeを再インストールしてみましたが、こちらも変化なしでした。 まさかiOSのバージョンが8.1.3のままなのがいけないのでしょうか…
guest

0

ベストアンサー

もっとスマートな方法(onloadにonloadって。笑)があるかもしれませんが、下記ならいけました!
新規に作成した画像インスタンスの読み込みが完了したら、サイズを取得しにいくイメージです。
※ios chrome(ブラウザ・OSのver.は同じ条件)のみ検証済みです。

window.onload = function(){ img_width_check(main_img);//画像のid } function img_width_check(main_img){ //現在表示されているwindow上の画像のwidth var now_width = document.getElementById(main_img).width; alert("nowidth = " + now_width); //元画像のサイズを取得 var img = new Image(); img.src = document.getElementById(main_img).src; //var img_width = img.width; //var img_height = img.height; img.onload = function() { alert("img_width = " + img.width); alert("img_height = " + img.height); } }

投稿2016/04/05 08:54

編集2016/04/06 05:36
Yousuck

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

katsuo_isono

2016/04/11 00:58

ご返信遅くなり申し訳ありません。 ご回答ありがとうございます。 上記のコード試してみたところ、正常に動作致しました! やはり画像インスタンスの読み込みが若干かかっていたようです。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問