これは長いもので、
前提
クライアントの現在のプロジェクトのバグ修正を支援するために呼び出されました。修正が必要だったのは、求人情報ページでした。ジョブのリストがあり、1 つをクリックすると、JavaScript が有効になっている場合、AJAX 呼び出しが行われ、ジョブの詳細が既存の要素 (DIV#emploi_details) に動的に読み込まれます。JS がアクティブ化されていない場合は、ジョブの詳細を含むページを再読み込みするだけです (重要度は低くなります)。
私は彼らのラボ サーバーに飛び乗って、開発 Web サイトで作業しました。
問題
基本的に、IE7 は (最初は) $().load() 経由で読み込まれたコンテンツを表示していませんでした。IE6 は innerHTML で問題なく動作しました。リクエストが送信され、毎回返信が届きます。データを受け取り、それを alert() して見ることはできますが、コンテンツの実際のダンプは機能しません。Safari、Firefox、問題ありません。情報をロードしている DIV#emploi_details 要素には、CSS display:none; があります。スタイルシートに含まれており、コンテンツが読み込まれた後に表示されます (その他のそれほど重要ではない詳細)。
show_emploi = function(id, succ_id)
{
$('#emploi_details').fadeOut(800, function() {
var $$ = $(this);
$$.load('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
if (isIE6) document.getElementById('emploi_details').innerHTML = data;
$$.show();
});
$('#bgContent').fadeOut();
});
}
ソリューション
最初は、$().load() が機能しているだけなのかもしれないという印象を受けていたので、ロードされたコンテンツの操作をより細かく制御するために $.get() に変更しました。
$.get('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
$$.empty().append(data).show();
});
これは機能します。IE6 および IE7 を含むすべてのブラウザーで。問題ない。奇妙ですが、それが機能し、完全に証明されているかどうかはわかります。質問しないでください。
プロットツイスト
ここで、たわごとが奇妙になります。私はバグが修正されたと考え、ソリューションをライブ Web サイトに適用しましたが、機能しません。IEはそれが好きではありません。$.ajax と他のすべての種類のものを試した後、困惑して、ライブ Web サイトにこれを使用することになりました。
$.get('emploi_<?php echo $data['lang']; ?>.php', { job_details: 1, ajax: 1, id: id, succ: succ_id, random: (new Date().getTime()) }, function(data, status){
document.getElementById('emploi_details').innerHTML = data;
$$.show();
});
また、すべてのブラウザーで動作します。必要最小限の JS のようなものは何もないためです。必然的に、この修正は開発 Web サイトでも機能します。
「つづく」
コンテンツの埋め込み機能には、すべてのブラウザー (および明らかにサーバー) でクリックされないものがあります。
全体として、私の質問は WTF の質問です。一方が機能し、もう一方が機能しない理由、または最初に正しく機能しなかった理由さえ理解できません($().load())。フレームワークのバージョンを確認するのが私の最初の本能だったので、明らかに異なる jQuery バージョン (1.2.6) ではありません。
とにかく面白いミステリーIMO。
スタックランドの誰かが神から与えられた答えを持っていることを願っています.
ありがとう