メイン エリアのコンテンツが JavaScript を介して読み込まれるようにサイトを設定しようとしています (一部のページはレンダリングに時間がかかります)。ただし、jQuery.load()、jQuery.getScript、および jQuery.ajax() を使用すると、ちょっとした論理的な問題に遭遇しました。
ロードされたコンテンツ内でこれらの関数などを使用できるように、getScript を介して特定の JavaScript ファイルをロードできる必要があります。
- index.php - 表示されているメイン ファイル (#loading も含む)
- js/script.js - ロード コードを含むファイル
- js/*.js - ロード後に #maincontent 内で使用できるようにする必要があるいくつかの JavaScript ファイル
- load.php - #maincontent にロードされるファイル
script.js:
$(document).ready(function() {
$('#loading').fadeIn('fast');
$('#maincontent').load('load.php', function() {
$('#loading').fadeOut('fast');
$('#maincontent').fadeIn('slow');
});
$('#navigation li a').click(function() {
$('#maincontent').fadeOut('fast');
$.getScript('js/jquery.contextMenu-1.01.js');
$.getScript('js/jquery-1.5.1.min.js');
$.getScript('js/jquery-ui-1.8.12.custom.min.js');
$.getScript('js/jquery.qtip-2.0.0.min.js');
$.getScript('js/ajax.js');
$.ajax({
method: 'get',
url: 'load.php',
data: 'page=' + $(this).attr('rel'),
beforeSend: function() {
$('#loading').fadeIn('fast');
},
complete: function() {
$('#loading').fadeOut('fast');
},
success: function(html) {
$('#maincontent').fadeIn('slow');
$('#maincontent').html(html);
}
});
});
$.getScript('js/jquery.contextMenu-1.01.js');
$.getScript('js/jquery-1.5.1.min.js');
$.getScript('js/jquery-ui-1.8.12.custom.min.js');
$.getScript('js/jquery.qtip-2.0.0.min.js');
$.getScript('js/ajax.js');
});
ご覧のとおり、最初に load.php をロードしようとしていますが、URL パラメーターやユーザーの操作は必要ありません。load.php は毎回正しく読み込まれますが、JavaScript コードについては同じことが言えません。うまくいく場合もあれば、クリーンなコンソールを取得する前にページを数回更新する必要がある場合もあります (エラーは発生しません)。
コンソールのエラーは、js コードが load.php 内で使用される前に正しくロードされていないことを示唆しています。これは特に、load.php に時間がかかる場合に当てはまります (PHP の sleep(5) 関数でテスト)。
何か明確にする必要がある場合はお知らせください:)