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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

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

jQuery

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

2878閲覧

IE11におけるjQuery.dataTablesで大量行を追加し重くなっても別途用意したNowLoadingのgifアニメを動かし続けるにはどうすればよいでしょう?

halohalolin

総合スコア46

Internet Explorer

Internet Explorer(IE;MSIE)はマイクロソフトが開発したウェブブラウザです。Microsoft Windowsに組み込まれています。

JavaScript

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

jQuery

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

0クリップ

投稿2019/12/10 09:19

jQuery.dataTablesで大量行(2千行ぐらい)を追加する処理があるのですが、その際手持ちのIE11では表示を終えるまで10~20秒かかりました。
そこで、jQuery.dataTablesによる表示処理が完了するまでにはとりあえずNow Loading画面を用意してgif画像によるアニメーションでお茶を濁そうと考えました。
しかしながら、実際にやってみるとNow Loading画面を用意してもgif画像が途中で固まったままjQuery.dataTablesの表示準備が完了して画面切り替えの流れになってしまい、お茶を濁すことすらできず困っています。
jQuery.dataTablesの追加処理と、Now Loading画面のGifアニメをIE11でも並列して動作し続けるにはどうすればよいでしょうか?

なお、Now Loading画面のソースイメージはこんな感じで、jQuery.dataTablesの表示準備前後で表示非表示を切り替えています。

html

1<div id="loader-bg"> 2 <div id="loader"> 3 <img src="load.gif" alt="Now Loading..." title="Now Loading..."> 4 <p>Now Loading...</p> 5 </div> 6</div>

jQuery.dataTablesの方は、ajaxで取得した内容を表示順に配列へ並び替えた上(output_data)で、以下のような感じで一気に反映しています。

javascript

1var display_table = $("#display_table").dataTable().api(); 2display_table.clear(); 3display_table.rows.add(output_data); 4display_table.draw();

環境は以下の通りです。

  • OS: Windows 10 Version 1909
  • ブラウザ: Windows 10付属のIE11
  • jquery-1.11.1
  • DataTables 1.10.5

以上よろしくおねがいします。

dotnetuseryamag👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

ご提示の内容から、やりたいのはこういうことなのかな?と想像してみました。
肝になるのは、

  • lodingの表示は、データ取得の前に実施
  • データ表示のコールバック関数内で、データの表示が終了したら、lodingの非表示

の部分になります。

このサンプルで6400件のデータをDataTableに差し込んでおり、Ajaxに2秒のディレイを意図的に入れていますが、
それほど時間はかからないので、いくらIEとはいえ、10秒以上はかなり時間がかかりますね。

IEでは確認できませんが、CODEPENにサンプル作成してあるので、
ほかのブラウザで動かしてみてください。

html

1<link rel="stylesheet" href="https://cdn.datatables.net/t/bs-3.3.6/jqc-1.12.0,dt-1.10.11/datatables.min.css" /> 2<script src="https://cdn.datatables.net/t/bs-3.3.6/jqc-1.12.0,dt-1.10.11/datatables.min.js"></script> 3<div class="wrap"> 4 <button id="loadStart" style="height:50px; margin-right:20px;">データ表示</button> 5 <img id="loading" style="display: none;width:50px;height:50x;" src="https://media.giphy.com/media/sSgvbe1m3n93G/giphy.gif"/> 6 <hr/> 7 <table id="foo-table" class="table table-bordered"> 8 <thead> 9 <tr> 10 <th>index</th> 11 <th>age</th> 12 <th>firstname</th> 13 <th>lastname</th> 14 </tr> 15 </thead> 16 </table> 17</div>

javascript

1$(function() { 2 3 //このgetData関数は強引に大きめのデータを作成するもので、回答とは直接関係ないです 4 //データベースや、ajaxでデータを取得する関数のイメージです 5 let getData = async function(callBack){ 6 let d = [] 7 await $.getJSON( 8 'https://next.json-generator.com/api/json/get/NkubeCYTP?delay=2000', 9 function(data) { 10 d = data; 11 }); 12 for (let i = 0; i < 6; i++) d = d.concat(d); 13 callBack(d); 14 } 15 16 //↓ココからが実処理です↓ 17 //DataTableの初期化 18 let dt = $("#foo-table").DataTable({ 19 columns: [ 20 { data: "index" }, 21 { data: "age" }, 22 { data: "firstname" }, 23 { data: "lastname" } 24 ] 25 }); 26 27 //ボタンが押されたときのイベント 28 $("#loadStart").on("click", function() { 29 //ローディングgifの表示と、ボタンの無効化 30 $(this).prop('disabled', true); 31 $("#loading").show(); 32 33 //DataTableのデータクリア 34 dt.clear().draw(); 35 36 //データ取得とコールバック関数の指定 37 getData(function(data){ 38 //DataTableにデータ挿入 39 dt.rows.add(data); 40 dt.columns.adjust().draw(); 41 42 //ローディングgifの非表示と、ボタンの活性化 43 $("#loadStart").prop('disabled', false); 44 $("#loading").hide(); 45 }); 46 47 }); 48});

投稿2019/12/11 15:13

satoshi_tajima

総合スコア337

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

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

halohalolin

2019/12/14 05:42

satoshi_tajimaさんありがとうございます。 その後別の案件が入ってすぐには試せなくなったのですが、IE11で上手く動くのか早々に試させていただきます!
halohalolin

2023/01/03 12:35

satoshi_tajimaさんありがとうございました かなり遅れましたがベストアンサーとさせていただきました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問