【发布时间】:2011-07-08 22:34:27
【问题描述】:
大家好,我将不胜感激。我研究了臭名昭著的“Flash hogging keyboard focus”问题,但我相信我们的问题可能涉及其他人已经遇到的解决方法。我已经尝试了在 stackoverflow 和其他网站上找到的各种解决方案,我总结如下。
我们有一个网络应用程序,一个特定的界面加载了几个我们用作“选项卡”的 div。当用户单击其中一个选项卡时,我们会隐藏当前 div 并取消隐藏新的 div。我们的主选项卡(在页面加载时加载)嵌入了来自 Scribd 的文档,该文档作为 Flash 电影加载。当用户点击 Flash 影片时,他们像往常一样使用鼠标/键盘滚动,当他们点击文档外部时,控件按预期返回。
当他们导航到另一个选项卡,然后返回到原始选项卡并单击嵌入的 Flash 以在其中导航时,嵌入的 Flash 会窃取对鼠标滚动的控制并且不会放开它。用户可以单击该文档并使用箭头键滚动,然后单击该文档并使用箭头键滚动父窗口,但鼠标滚动仍然绑定到嵌入的 Flash 影片。唯一的补救办法是硬刷新页面。
当用户单击新标签时我尝试过的操作: 如果旧选项卡是“主页”,则从 DOM 中删除嵌入元素:
saved_element = $('[name="flash_embed_object_name"]').remove();
如果新标签是“home”,则将元素添加回 DOM:
$('#parent_div').append(saved_element);
这不起作用——我可以确认该元素已从 DOM 中删除,但是当它返回到 DOM 时,它会像以前一样在单击时占用鼠标滚动。 我也尝试了类似的解决方案,但没有删除我调用的元素
$('[name="flash_embed_object_name"]').blur(); 和 $('#clicked_tab_div').focus();
但这也无济于事。有没有人有任何其他想法?我的下一个想法是我需要以某种方式停止播放 Flash 电影,然后它将焦点返回到页面。
非常感谢任何输入。谢谢!
【问题讨论】:
-
你能解释一下解决方案吗?我有一个从 jquery ajax 调用中检索到的表和嵌入式 pdf。鼠标焦点在 pdf 上,我无法滚动表格。
-
我相信解决方案涉及我们将嵌入元素留在那里,但操纵它的位置使其脱离可视屏幕。当包含元素被隐藏并再次显示时,它会导致一些问题。不幸的是,我相信你的情况有点不同。
标签: jquery flash keyboard focus scribd