Привет всем, буду признателен за некоторые идеи. Я исследовал печально известную проблему «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-ролика, и тогда он вернет фокус на страницу.
Любой вклад очень ценится. Спасибо!