私はこの奇妙な問題を抱えています。できるだけ具体的に説明しようと思います。
私はASP.NET 4.0、jQueryを使用してWebモジュールを開発しており、Ajaxを使用してWebサーバーへのゲッターとセッターを持っています。
製品セレクターがあります。製品を選択するときに、Ajax 呼び出しでデータを取得します。詳細ペインよりも、製品名、画像、説明などを変更します...
FireFox と Chrome では正常に動作しますが、Internet Explorer では、製品名 (および製品名のみ - 同じオブジェクトからの画像と説明) が更新を拒否します。
Visual Studio で改行を配置し、数秒待ってから F5 キーを押すと (正しい製品名が表示されます)、ラベルが変更されます。しかし、F5 を非常に速く叩くと、そうではありません。そこで、setTimeout()
50 ミリ秒の遅延を伴うコードを配置しました。これは IE で機能します。
Internet Explorer でこの動作が発生する理由を知っている人はいますか?
いくつかのコード:
success: function (msg) {
$("#tblHardwareOptions tr").remove();
var tempDevice = JSON.parse(msg.d[3]);
$("#imgDevice").attr("src", tempDevice.image);
$("#deviceDescription").html(unescape(tempDevice.description));
//=> setTimeOut works, added the "" to be sure it is empty
// setTimeout(
// function () {
//without timeout it won't work in IE, even emptying the string
// $(lblMachineName).text("");
// $(lblMachineName).text(unescape(tempDevice.modelname));
// }
// , 50);
//Tried without jQuery, but doesn't work neither
document.getElementById(lblMachineName.replace("#", "")).innerText = unescape(tempDevice.modelname);