1

私はテーブルを使ってスクリプトを作成しようとしています。InternetExplorerでより速く作業できます。クロムでうまく動作します。助言がありますか??

ここで見ることができるライブデモhttp://megatrixads.com/cbm

前もって感謝します!

4

3 に答える 3

2

上記の回答で述べたように。プロファイラーを使用してみてください。私はJSのパフォーマンス改善について読んでいます。これは素晴らしい本です

あなたのコードをチェックアウトしましたが、できることがいくつかあります。

ページをより速く表示するため。HEAD ではなくすべての JS をマークアップの後に追加することから始めます。CENTERタグの後に!このようにして、JS が実行を開始する前に HTML/css がロード/レンダリングされます。JS は DOM 内のものを変更できるため、JS をロードするとすべてのレンダリングが停止します。

document.ready() を使用してみてください

すべてのJSを1つのファイルに入れて最小化またはパックしてみてください=>サーバーへのリクエストの負荷/数が改善されます。

selectable() ステートメントでは、 $('.ui-selected') および $('.ui-selected').length() => この el を変数に格納することがよくあります。したがって、 var $ui_selected = $('.ui-selected'); を実行するだけです。この方法では、Jquery はこの要素を選択するために毎回 DOM を検索しません!(ちなみに、クラスを使用して要素を検索すると、#ID を使用するよりもパフォーマンスが低下します。

これらのヒントがお役に立てば幸いです。

于 2012-06-20T07:00:09.953 に答える
1

IE9に組み込まれているプロファイラーの使用を検討してください。

F12(または[ツール]-> [開発者ツール])->[プロファイラー]->[プロファイリングの開始]。

レンダリングを高速化するためにIE7/IE8が必要な場合でも、IE9でプロファイルを作成して、明らかなパフォーマンスの問題(特定の関数への呼び出しが多すぎるなど)があるかどうかを確認できます。ほとんどのライブラリにはIE6-8などの古いブラウザ用の特別なコードパスがあるため、特定の問題を見つけるには、IE9で開発ツールを使用しているときにブラウザ/ドキュメントモードをIE7/8に強制する必要がある場合があります。

于 2012-06-20T06:49:41.313 に答える
1

私は js オブジェクトからマップを生成することをテストしましたが、IE では魅力的に機能します。

これは、HTMLからマップオブジェクトを生成するために使用したコードです(実行する前に最初のtrを編集したので、正しい結果が生成されます。tdを使用したtrは、他のすべてと同じ形式で、colspanを使用します)

$(document).ready(function() {

   var trIndex = 0,
       mapObj = {},
       tdIndex = 0;; 

   $table = $('.selectable');

   $('tr', $table).each(function() {
       mapObj[trIndex] = [];
       tdIndex = 0;
       $('td', $(this)).each(function() {
           if($(this).attr('colspan') > 0) {
               mapObj[trIndex][tdIndex] = {colspan: $(this).attr('colspan')}
           } else {
               mapObj[trIndex][tdIndex] = {id: $(this).attr('id')}
           }
           tdIndex++;
       });
       trIndex++;
   })
   console.log(JSON.stringify(mapObj));
}); 

次に、このオブジェクトを使用してテーブルを生成しました。テーブルに必要なものは次のとおりです。

<table width="1160px" height="695px" class="selectable"></table>

マップを生成するための JavaScript。生成されたオブジェクトが大きすぎてここに投稿できないため、フィドルを挿入しました。リンクは次のとおりです。http://jsfiddle.net/u8AwJ/

もちろん、コードはさらに最適化できますが、現時点では時間は限られています。

これは、マップの生成にのみ関連しています (私はあなたが持っていたアクションを削除したので、それを機能させることができます - 私が意味するレンダリング)。その部分を元に戻すことができます。

于 2012-06-20T11:28:49.317 に答える