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

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

ただいまの
回答率

90.48%

  • JavaScript

    17009questions

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

  • jQuery

    6927questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

ASP.NETでのjQueryの挙動がFireFoxなど特定のブラウザで機能しない

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 327

key634

score 1

![イメージ説明

すみません質問失礼いたします。
ASP.NETにてWEBフォームを開発しております。
内容といたしましてはデータベースの検索などを行うものです。

ボタンクリックによりデータベースの検索を行うようにし(SQL文で抽出しテーブル形式でhtmlに表示)、検索の待機時間に
ロード待ちのくるくるの進捗インジケータのgif画像を中央に表示させるようにしました。
しかし実装してみたところ、ブラウザがクロームとIEの場合のみ表示されるのですが、その他のブラウザ
FireFoxやOperaなどでは表示されません。(検索などプログラムの実行は正常にされています。)

 発生している問題・エラーメッセージ

$().htmlで画像表示させている進捗インジケータがクローム、IE以外で表示されない

 jQueryのソースコード

function loading() {
    $('#load_image').html("<img src='画像ソース場所'>");
}

 aspxのソースコード

<asp:Button ID="Btn" runat="server" Text="検索" OnClientClick="loading();" OnClick="Btn_Click" />
<div id="load_image"></div>

 cssのソースコード

#load_image {
    position: fixed;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%,-50%);
    transform: translate(-50%,-50%);
    z-index: 9997;
}

 

色々試してみたところ、上記jQueryのソースコードの3行目に

alert("");


と空のダイアログを入れてみるとなぜか画像が表示されました。当然alert文など入れたくないのでとても困っています。
すみませんが、ご助力お願いいたします。

 環境

Visual Studio2012
Microsoft.NET Framework Version4.6.01055

 追記

x_x様からのご指摘により、キャッシュ削除をしたところOperaに若干改善が見られました。しかし、画像が上手く表示されない(「画像」と文字が出ていたり、gifが動かなかったり)またFireFoxではいまだに非表示でした。すみませんご助力お願いいたします。

 追記2

FireFoxで$('#load_image').html("<img src='画像ソース場所'>");にブレークポイントを設置してステップ実行してみたところ、直後で画像が表示され、正しく実行されました。開発ツールを終了しそのままFireFoxを閉じずにいると再現されましたが、gif画像は静止しての表示となりました。FireFoxを再起動するとまた画像は表示されなくなってしまいました。
また、スクラッチパッドにて単独実行したところ、こちらは正常に描画されました。

 追記3

Operaでは正常に動作が確認できるようになりました。(原因は不明ですがキャッシュ削除の効果かもしれません。)

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SurferOnWww

    2018/05/08 17:58

    自分が Firefox 59.0.3 でこのページを見ると他のブラウザと全く同様に .gif 画像は動いてます。質問者さんがご自分の「解決していない」という Firefox でこのページを見たらどうなりますか?

    キャンセル

  • key634

    2018/05/08 18:02

    こちらのページは見ることができました。

    キャンセル

  • key634

    2018/05/08 18:04

    ただ大変申し訳ありません。回答してくださった方のご意見で解決策を見つけまして、事故解決に至ることになりました。解決策を書いてクローズしたいと思います。お二方には多くの時間を割いていただいて、申し訳ないことと、感謝をしています。ありがとうございました。

    キャンセル

回答 2

+2

画像ファイルがまだ読み込まれていないために起こっているのだと思いますが、Resource Hintsにより改善するかもしれません。
https://developer.mozilla.org/ja/docs/Web/HTTP/Link_prefetching_FAQ
https://blog.kazu69.net/2016/03/19/optimize_resources_using_resoucehint_and_preload/

ただ、この手の画像はサイズも小さいし、一か所で管理することも可能であるため、CSS内に埋め込むことで遅延なく表示できてよさそうです。

CSS内の画像埋込で高速化(Data URI)
https://qiita.com/cognitom/items/3134467210e0022f4a02

ウェブ上で簡単に変換できるツールもあります。
画像をdataURL(MIME Type + base64文字列)に変換する
http://hi0a.com/demo/img-base64-datauri/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/08 18:08

    大変申し訳ないのですが、自己解決してしまいました。ただ、その解決策に至ったのはx_x様のcss埋め込みという観点からでして、.htmlを使わずfadeinにてcssにて非表示からフェードインするという方法に導きました。(もうしわけありません、先読みでは解決しませんでした。)
    解決方法は自己解決の箇所に詳細を書きたいと思います。
    もう一方コメントして頂いた方もそうですが、x_x様には長い時間割いていただき、また回答もしていただき大変感謝しております。ありがとうございました。

    キャンセル

  • 2018/05/08 18:10

    わたしは先読みではなく埋め込みを推奨して回答したつもりでしたが、伝わりませんでしたかね?

    キャンセル

  • 2018/05/08 18:19

    すみません大変失礼しました。先読みを試して、次にcssに至るところで別手法に気がついてしまいました。明日こちらを試してみてからこちらの質問を締めようと思います。
    色々ご提示していただき大変申し訳ありませんでした。

    キャンセル

  • 2018/05/09 09:46

    すみません失礼します。試してみたところ、クロームでは確認できるのですがやはりFirefoxだと確認できませんでした。時間を割いて色々ご教授してくださり、本当にありがとうございました。

    キャンセル

  • 2018/05/10 11:37

    Firefoxはバージョン2ですでに対応しています。
    https://caniuse.com/#search=Data%20URI
    わたし自身なんどもこの手法でリリースしていますので。

    キャンセル

check解決した方法

0

コメント、回答してくださった方ありがとうございました。別の方法から表現することができたのでそちらを書きたいと思います。

解決方法:jQueryにおいて.htmlで書き換えるのでなく、.fadeInにてdisplay:noneの非表示から画像を表示させる方法

変更内容

 jQuery

function loading() {
$('#load_image').fadeIn("fast");
}

 aspx

<asp:Button ID="Btn" runat="server" Text="検索" OnClientClick="loading();" OnClick="Btn_Click" />
<img id="load_image" src='ソースの場所'/>

 css

load_image {
display: none;
position: fixed;
top: 50%;
left: 50%;
-webkit-transform: translate(-50%,-50%);
transform: translate(-50%,-50%);
z-index: 9997;
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.48%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • JavaScript

    17009questions

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

  • jQuery

    6927questions

    jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。