FireFox, кажется, помнит мою старую карту изображения - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть элемент управления диаграммой на моей странице, который имеет возможность «развернуть». Я использую карты изображений для определения возможных точек сверления. Весь этот код прекрасно работает в последних версиях Chrome и Internet Explorer.

enter image description here

Итак, глядя на изображение выше, слева в консоли вы видите три записи.

  • Запись 1: когда диаграмма впервые загружается на страницу, это ее исходная карта изображения.
  • Вступление 2: Когда пробурена Диаграмма, это карта изображения следующего уровня - эта карта отображается правильно.
  • Ввод 3: отмена сверла вниз. Обратите внимание, что данные идентичны данным первой записи.

Мой правый монитор в настоящее время отображает диаграмму записи 3 и проверяет разметку HTML. Я вижу, что карта записи 3 загружена.

Тем не менее, если вы посмотрите в нижний левый угол моего правого монитора, вы увидите javascript: DrillChart ('1489'). Этот метод является частью записи 2, а НЕ записи 1 / 3.

function UndoDrillDown() {
    $('#ChartLoading').show();

    $.ajax({
        url: '../Chart/UndoDrillDown',
        data: { ReportID: reportID },
        datatype: 'json',
        success: Reload
    });
}

function Reload(htmlImageMap) {
    //Remove the old image map and then add a fresh one.
    console.log(htmlImageMap);
    //$('#HistoricalChartDialog').children("map").remove();
    $('#HistoricalChartMap').remove();
    $(htmlImageMap).appendTo('#HistoricalChartDialog');

    //Fetch image associated with new image imap.
    var reportID = parseInt($('#ReportSelector').val());

    $('#HistoricalChart').bind('load', function () {
        $(this).unbind('load');
        //When drilling down it does not make sense to continue showing the old tooltip after clicking.
        $('#CustomTooltip').hide();
        $('#ChartLoading').hide();
        $(this).show();
    }).bind('error', function () {
        $(this).unbind('error');
        $('#ChartLoading').hide();
        $('#ChartLoadingError').show();
    }).attr('src', '../Chart/HistoricalChart?ReportID=' + reportID + '&cacheBuster=' + new Date().getTime());
}

Я пытался удалить свою карту изображений несколькими различными способами. Насколько я могу судить, карта изображения была удалена, но FireFox все еще помнит старые данные.

РЕДАКТИРОВАТЬ: если я скрываю HistoricalChart перед тем, как снова показывать его, тогда он работает правильно в FireFox ... Я хотел бы по возможности избежать мерцания.

Ответы [ 3 ]

2 голосов
/ 16 февраля 2012

Это похоже на https://bugzilla.mozilla.org/show_bug.cgi?id=694503, но это исправлено в Firefox 10. Какую версию Firefox вы используете?

Если вам нужно обойти это в старых версиях Firefox, удаление всех элементов <area> из <map> перед удалением <map> также будет работать.

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

Это странная причуда в FireFox. Я нашел решение, но любопытно, зачем мне его использовать:

function Reload(htmlImageMap) {
    if ($.browser.mozilla) {
        //Image maps are 'held onto' in FireFox even when the HTML is removed.
        $('#HistoricalChart').attr('usemap', '');
    }

    //Remove the old image map and then add a fresh one.
    $('#HistoricalChartDialog').children("map").remove();
    $(htmlImageMap).appendTo('#HistoricalChartDialog');

    $('#HistoricalChart').attr('usemap', '#HistoricalChartMap');

    //Fetch image associated with new image imap.
    var reportID = parseInt($('#ReportSelector').val());

    $('#HistoricalChart').bind('load', function () {
        $(this).unbind('load');
        //When drilling down it does not make sense to continue showing the old tooltip after clicking.
        $('#CustomTooltip').hide();
        $('#ChartLoading').hide();
        $(this).show();
    }).bind('error', function () {
        $(this).unbind('error');
        $('#ChartLoading').hide();
        $('#ChartLoadingError').show();
    }).attr('src', '../Chart/HistoricalChart?ReportID=' + reportID + '&cacheBuster=' + new Date().getTime());
}
0 голосов
/ 16 февраля 2012

Вы пробовали обновить из кэша?Если нет, нажмите Ctrl, затем F5, и он должен обновить и показать последние изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...