Изменение образа src с помощью Controller завершилось неудачно в IE после однократного определения src - PullRequest
0 голосов
/ 13 февраля 2012

Я использую следующий код для перезагрузки изображения с использованием 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 указывает, что я хочу изменить атрибут src HistoricalChart.Для этого я использую следующее действие контроллера:

public ActionResult HistoricalChart(int reportID)
{
    LineChart lineChart = (LineChart)Session[string.Format("HistoricalReport: {0}", reportID)];
    MemoryStream memoryStream = lineChart.ConvertToMemoryStream();
    return File(memoryStream, "image/png");
}

Это работает на 100% нормально под Chrome.Однако в IE9 это работает только в первый раз.«Загруженное» оповещение срабатывает каждый раз под IE - только изображение не меняется.

То есть у меня установлена ​​точка останова внутри метода HistoricalChart.При первом запуске HistoricalChart img устанавливается src - достигается точка останова.После этого, однако, точка останова не срабатывает после вызова .attr ('src', ...).

В идеале мне не пришлось бы очищать атрибут src или скрывать изображение, чтобы решить эту проблему.вопрос.Я не хочу, чтобы мое изображение мерцало при взаимодействии с ним.

Это известное ограничение для IE?Обходные?Или я что-то не так делаю?

1 Ответ

1 голос
/ 13 февраля 2012

Может быть, вы получаете кэшированное изображение во второй раз. Попробуйте добавить случайное число к исходному URL.

$('#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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...