私はこのすべてに不慣れで、メインページの div に動的にロードされた html ページに大きく依存する Web アプリを作成しています。
メインページは、jquery や私自身のいくつかを含むさまざまな js ファイルにリンクしています。
これに加えて、ロードされた各 html ファイルは独自の js ファイルにリンクして、ユーザーの操作を制御します。また、それらの一部には、html ページがロードされる div もあります。
私が気付いていることの 1 つは、一部の HTML ページがメイン ページにロードされたスクリプトへの反応が遅いことです。クリックしたときにボタンを強調表示するなどのグローバルなものは、一部のページで認識できるように微調整する必要があります。
私を本当に悩ませているもう 1 つのことは、メイン ページにリンクされているか別の子ページにリンクされているかに関係なく、一部のスクリプトが別のファイルにあると機能しないことです。実際の関数を実際の子ページの js ファイルに入れる必要があります。
データベースから html テーブルを作成するためのこの単純な関数は、これらの 1 つです...
function fill_grid(collection, columns){
var jsonObj = JSON.stringify(columns);
param = "collection=" + collection + "&columns=" + jsonObj;
// Ajax call ~~~~~>
$.ajax({
type: 'POST',
url: 'back/fill_grid.php',
processData: false,
data: param,
dataType: 'json',
success: function(data){
$('.grid_foot').text(data.rows.length + ' records');
$.each(data.rows, function(count, item) {
var c = 0;
var cells = '';
while (c < columns.length) {
cells += '<td class="'+ columns[c] +'">' + item['cell'][c] + '</td>';
c++;
}
var newTr = '<tr id="' + item['id'] + '">'+ cells +'</tr>';
$('.grid_wrapper table').append(newTr);
});
var c = 0;
while (c < columns.length) {
var min_width = $('div.' + columns[c]).css('min-width');
$('td.' + columns[c]).width(min_width);
var col_width = $('td.' + columns[c]).width();
$('div.' + columns[c]).width(col_width);
c++;
}
var c = columns.length - 1;
var col_width = $('div.' + columns[c]).width();
$('td.' + columns[c]).width(col_width);
}
});
}
...ご覧のとおり、モジュラー アプリケーション用に設計されています。ajax 呼び出しのパラメーターとテーブルの構築が渡されます。ただし、別のファイルにある場合は実行されませんが、firebug と dom インスペクターはどちらもエラーを表示しません。もちろん、両方のコンソールに貼り付けた場合は機能します。
なぜこうなった?ネストされたhtmlページが原因ですか?ページにロードできるスクリプトの数に制限はありますか? 他のスクリプトが干渉している可能性はありますか? どうすればデバッグできますか?
編集: Firebug と Dom Inspector の両方が、「data_grid()」が定義されておらず、datagrid.js イベントが見つからないことを教えてくれますが、スクリプト タグで正しいパスを使用し、メイン ページの前に含めました。独自のjsファイル!ブラウザのキャッシュをフラッシュして再起動しましたが、それでもこれが表示されます。
編集: いくつかのスヌーピングの後、子ページの 1 つでバム リンクを見つけました。それを修正した後、404 ファイルが見つかりませんというエラーが発生しなくなりました。しかし、まだ関数が定義されていないというエラーが発生します。