ie9: раздражающее всплывающее окно при отладке: «Ошибка:« __flash__removeCallback »не определено» - PullRequest
5 голосов
/ 18 марта 2011

Я работаю над сайтом asp.net mvc, который использует социальные виджеты Facebook.Всякий раз, когда я запускаю отладчик (т.е. 9 является браузером), я получаю много всплывающих окон с ошибкой: Ошибка: «__flash__removeCallback» не определено.

Чтобы убедиться, что мой код не был ответственным, я просто создал новый asp.net mvcсайт и ударил F5.Если вы перейдете по этому адресу: http://developers.facebook.com/docs/guides/web/#plugins, вы увидите всплывающие окна.

При использовании других браузеров всплывающее окно не появляется.Я использовал последнюю бета-версию ie9 перед обновлением до ie9 RTM вчера и не сталкивался с этой проблемой.

Как вы можете себе представить, это очень раздражает ... Как я могу остановить эти всплывающие окна?Может кто-то еще воспроизвести это?

Спасибо!

Ответы [ 4 ]

2 голосов
/ 14 июля 2012

Я тоже не могу решить эту проблему, но я могу, по крайней мере, скрыть это для своих пользователей:

$('#video iframe').attr('src', '').hide();
try {
    $('#video').remove();
} catch(ex) {}

Первая строка предотвращает появление проблемы на странице; второй съедает ошибку, когда jquery удаляет ее из DOM явно. В моем случае я заменял HTML-контейнер контейнера несколькими родителями над этим тегом и предоставлял это исключение пользователю до исправления.

1 голос
/ 24 ноября 2012

Я получил решение.

try {
  ytplayer.getIframe().src='';
} catch(ex) {
}
1 голос
/ 22 марта 2011

Я отвечаю на это, так как это сегодня подвело меня к стене.

Это вызвано флэш-памятью, обычно, когда вы не указали уникальный идентификатор встраиваемого объекта, поэтому он выбирает неправильный элемент.

Самый быстрый (и лучший) способ решить эту проблему - просто:

добавление уникального идентификатора для вашего встраивания / объекта

Теперь, похоже, это не всегда решает проблему, у меня был один сайт, на котором он просто не исчезнет, ​​независимо от того, на каких элементах я установил идентификатор (я подозреваю, что это был видеоплеер, который меня попросили использовать клиент ).

Этот код javascript (использующий jQuery при загрузке документа, замените на ваш любимый вариант) избавится от него. Теперь это, очевидно, не удалит обратный вызов для определенных элементов. Они должны хотеть удалить его по причине, возможно, это приведет к постепенной утечке памяти на вашем сайте в javascript, но это, вероятно, тривиально.

это вторичное (и неоптимальное) решение

    $(function () {
        setTimeout(function () {
            if (typeof __flash__removeCallback != "undefined") {
                __flash__removeCallback = __flash__removeCallback__replace;
            } else {
                setTimeout(arguments.callee, 50);
            }
        }, 50);
    });

    function __flash__removeCallback__replace(instance, name) {
        if(instance != null)
            instance[name] = null;
    }
0 голосов
/ 07 мая 2011

Прошло уже больше месяца с тех пор, как мне в последний раз нужно было отлаживать проект.Facebook теперь исправил эту проблему.Раздражающее всплывающее окно больше не отображается.Я ничего не изменил.

...