Встроенный элемент (Flash) блокирует прокрутку колеса мыши, когда он скрыт и отображается снова

Привет всем, буду признателен за некоторые идеи. Я исследовал печально известную проблему «Flash hogging keyboard focus», но я полагаю, что наша проблема может включать обходной путь, с которым уже сталкивался кто-то другой. Я пробовал различные решения, которые нашел на stackoverflow и других сайтах, которые я суммирую ниже.

У нас есть веб-приложение, и определенный интерфейс загружает несколько div, которые мы используем как «вкладки». Когда пользователь нажимает на одну из вкладок, мы скрываем текущий div и отображаем новый. Наша главная вкладка (которая загружается при загрузке страницы) содержит документ из Scribd, который загружается как Flash-ролик. Когда пользователь щелкает Flash-ролик, он прокручивается с помощью мыши/клавиатуры, как обычно, а когда он щелкает за пределами документа, элемент управления возвращается, как и ожидалось.

Когда они переходят на другую вкладку, а затем возвращаются на исходную вкладку и нажимают на встроенный Flash для навигации внутри него, встроенный Flash крадет контроль над прокруткой мыши и не отпускает ее. Пользователь может щелкнуть в этом документе и выполнить прокрутку с помощью клавиш со стрелками, а затем щелкнуть за пределами документа и прокрутить родительское окно с помощью клавиш со стрелками, но прокрутка с помощью мыши по-прежнему привязана к встроенному ролику Flash. Единственное средство — жесткое обновление страницы.

Что я пробовал, когда пользователь щелкает новую вкладку: если старая вкладка является «домашней», удалите встроенный элемент из DOM:

saved_element = $('[name="flash_embed_object_name"]').remove();

Если новая вкладка «дом», добавьте элемент обратно в DOM:

$('#parent_div').append(saved_element);

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

$('[name="flash_embed_object_name"]').blur(); и $('#clicked_tab_div').focus();

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

Любой вклад очень ценится. Спасибо!


person Christopher Armstrong    schedule 04.03.2011    source источник
comment
Не могли бы вы объяснить решение? У меня есть таблица и встроенный PDF-файл, извлекаемый из вызова jquery ajax. Фокус мыши находится на pdf, и я не могу прокрутить таблицу.   -  person user602599    schedule 01.04.2011
comment
Я полагаю, что решение заключалось в том, что мы оставляли встроенный элемент там, но манипулировали его положением, чтобы он не отображался на экране. Когда содержащий элемент был скрыт и снова показан, это вызывало некоторые проблемы. Я полагаю, что ваш случай немного отличается, к сожалению.   -  person Christopher Armstrong    schedule 05.04.2011


Ответы (1)


Решение заключалось не в том, чтобы скрыть div, содержащий встроенный Flash — при этом встроенный элемент «обновлялся» при повторном отображении. Мы изменили положение элемента, чтобы по существу скрыть его из поля зрения, но не скрывая его.

person Christopher Armstrong    schedule 09.03.2011