我有一个 iframe,里面有一个 Flash 剪辑,占据了整个窗口,在 iframe 外部,我有一个 div,用作 iframe 上方的菜单栏,其中有下拉菜单。
现在的挑战是让这些下拉菜单在鼠标悬停时显示,但在访问者与 flash/iframe 交互时隐藏。
我可以通过检查 document.activeElement 轻松检测是否是这种情况,但是有问题的部分是检测它们何时“不”使用 Flash。我现在所做的只是检测主窗口上的鼠标移动,然后通过调用 top.focus()
重置 activeElement,(document.activeElement.blur()
确实由于某种原因无法在 Chrome 上运行)。问题是,执行此操作后,当用户与其交互时,它不会再次将 activeElement 设置回 iframe,几乎就像 top.focus()
将 activeElement 无限期地设置为“body”。
有什么想法可以让我正确地做到这一点吗?
简而言之,当与主窗口交互时,我需要将焦点从 iframe 上移开,然后在与 iframe 交互时将焦点设置回 iframe(这应该是浏览器的默认行为)。
谢谢
编辑:
jsFiddle 展示问题:http://jsfiddle.net/tvc3S/
请注意,如果没有 Flash,它也可以正常工作.. 不确定是否有办法解决这个问题..
最佳答案
天哪,我确实让事情变得比必要的复杂得多,只需检测 iframe 上的鼠标悬停和鼠标移出事件就可以完成任务。
当然,这使用悬停事件而不是焦点事件,这会带来稍微不同的体验,但这对于我正在做的事情来说很好。
关于javascript - 检测 iframe 上的鼠标位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9314666/