プログラムでいくつかのliアイテムを入力する順序付けられていないリストがあります。
function addNewElement(elem) {
var li = $("<li></li>");
li.prop("class", "ui-state-default");
li.prop("id", elem.Alias);
li.text(elem.Name);
var newItem = '<div id="' + elem.Alias + '-Status" class="elementStatus"><div class="image"><img id="' + elem.Alias + '-StatusImg" src="@Url.Content("~/images/ongoing.gif")"></div><div id="' + elem.Alias + '-StatusTxt" class="text">Waiting...</div></div>';
console.log("new item added: " + newItem);
li.append(newItem);
li.appendTo($(getSortableContainer(elem.Alias)));
};
関数 getSortableContainer は順序付けられていないリスト (ul アイテム) です。
長いタスクの実行中は、画像が表示され、画像の下に「待機中」というテキストが表示されます。長いタスクの結果を取得したら、次を使用して div (src プロパティ) 内の上記の img のイメージを更新します。
function setImg(elemId) {
$('#' + elemId + '-StatusImg').attr("src", '@Url.Content("~/images/MyImage.gif")');
$('#' + elemId + '-StatusTxt').text("Done!");
}
問題は、上記の機能を使用して画像を新しいものに更新すると、画像がすぐに更新されず、数秒後、15 秒以上更新されることです。
イメージをすぐに強制的に更新するにはどうすればよいですか?
更新 2013.10.24 :
以下の行を使用してイメージを更新し、キャッシュを防ぎます。
var d = new Date();
$('#' + elemId + '-StatusImg').prop("src", '@Url.Content("~/images/MyImage.gif")' + '#' + d.getTime());
それを使用すると、(以前にすべての Internet Explorer の履歴、Cookie などを削除して) 初めて Web アプリを起動すると、画像が遅延して表示され続けます。次回、インターネット エクスプローラーの履歴を削除せずに Web アプリを再起動すると、すぐに画像が表示されるので、どうしたのでしょうか?