我使用以下代码使用jQuery重新加载图像:
//Fetch image associated with new image imap.
var reportID = parseInt($('#ReportSelector').val());
$('#HistoricalChart').bind('load', function () {
alert("loaded");
$(this).unbind('load');
$('#ChartLoading').hide();
$(this).show();
}).bind('error', function () {
$(this).unbind('error');
$('#ChartLoading').hide();
$('#ChartLoadingError').show();
}).attr('src', '../Chart/HistoricalChart?ReportID=' + reportID);
此jQuery链的最后一行表示我希望更改HistoricalChart的src属性。我使用以下Controller操作:
public ActionResult HistoricalChart(int reportID)
{
LineChart lineChart = (LineChart)Session[string.Format("HistoricalReport: {0}", reportID)];
MemoryStream memoryStream = lineChart.ConvertToMemoryStream();
return File(memoryStream, "image/png");
}
这在Chrome下可以100%正常使用。但是,在IE9下,这仅适用于第一次。每次在IE下都会触发“加载”警报 - 只有图像不会改变。
也就是说,我在HistoricalChart方法中设置了一个断点。 HistoricalChart img第一次设置了src - 断点被击中。但是,在此之后,在调用.attr('src',...)后,断点不会被击中。
理想情况下,我不必清除src属性或隐藏图像来解决此问题。我不希望我的图像在与它交互时闪烁。
这是IE的已知限制吗?解决方法?或者我做错了什么?
答案 0 :(得分:1)
可能是您第二次获得缓存图像。尝试在源网址中添加随机数。
$('#HistoricalChart').bind('load', function () {
alert("loaded");
$(this).unbind('load');
$('#ChartLoading').hide();
$(this).show();
}).bind('error', function () {
$(this).unbind('error');
$('#ChartLoading').hide();
$('#ChartLoadingError').show();
}).attr('src', '../Chart/HistoricalChart?ReportID=' + reportID
+ "&r=" + Math.random());