0

基本的に16進ビューアであるwebappでjqueryを使用しています。各バイトを独自の要素 (<i> タグのみ) に一意の ID (ファイル内のオフセット) を付けて配置するので、簡単に参照できます。私は基本的に次のようになります:

var str = 
  "<i id=h0>00 </i>" +
  "<i id=h1>00 </i>" + 
  "<i id=h3>00 </i>" +
  "...";
$("#myid").html(str);

その str に 100K のタグがある場合、その html 行の設定には約 3 秒かかります (str var を別の方法で作成するので、コメントしないでください。わかりやすくするためにここにそのように書いただけで、問題ではありません)。

表示される各バイトを参照する簡単な方法を維持しながら、これのパフォーマンスを向上させることは可能ですか? 各バイトをタグに保持して、特に背景色を簡単に設定できるようにしたいと思います。私が考えることができる唯一の代替手段は、一度にファイルの一部をロードすることです (その str 変数には 10,000 個のタグのみを保持します)。

4

6 に答える 6

1

単にしないでください。

誰かが実際にそれらを表示するのに十分な大きさの画面を持っていたとしても、誰も同時に100kバイトを見る必要はありません。

現在実際に表示する必要のあるタグをレンダリングし、必要に応じてさらにレンダリングします。

于 2012-07-20T22:48:43.123 に答える
0

これを複数回実行することで、段階的にロードできます。

var str = "<i id=h0>00 </i>";
$("#myid").append(str);
于 2012-07-20T22:33:54.527 に答える
0

タグを削除して、string、slice(a、b)を使用して、必要な文字列のテキスト部分を返す関数を作成できます。これにより、読み込み時間と全体的な文字数が削減されます。

于 2012-07-20T22:35:00.270 に答える
0

あなたがすべき

$('<i />').attr('id', 'TAB0').html('hello world');

試す

var $mytab = $('mytab');
$([ 
    { id: 'myid0', iHtml: 'hello world' },
    { id: 'myid1', iHtml: 'hello world' }
]).each(function (n) {
  var data = this;

  $mytab.append(
    $('<i />').attr('id', data.id).html(data.iHtml)
  );

});
于 2012-07-20T23:13:48.877 に答える
0

タグを削除し<i>て、特定のテキストに実際に必要な場合(背景色を制御するため)にのみプログラムで追加することができます。次に、それらをオンデマンドで追加し、前もってそれほどオーバーヘッドをかけないようにします。

ブラウザは、より少ないタグで大量のテキストを丸呑みするのにより効率的であるはずです。

もう1つの可能性は、すべてのデータが一度に表示されないようにページングまたはタブを実装し(おそらく、一度に100,000アイテムを表示したい場合)、必要に応じて後続のタブ/ページを動的に構築することです。一度に小さなページアイテムを作成することになります。これにより、メモリの消費量も大幅に少なくなるため、モバイルフレンドリーになります。

于 2012-07-20T22:41:40.320 に答える
0

documentFragmentsをチェックしてください。jQueryのhtmlメソッドがそれを使用しているとは思えません。私の推測では、.html()はinnerHTMLプロパティを変更するだけです。documentFragmentsを使用すると、速度が向上する可能性があります。この記事を読んでください。http://ejohn.org/blog/dom-documentfragments/

于 2012-07-20T22:43:36.133 に答える