html - 在 IE7 中检测覆盖 Flash 的不可见 div 上的悬停

标签 html css internet-explorer-7

我有一个页面,其中包含 100% 宽度/高度的 Flash 影片,并覆盖有 HTML。是的,这个网站是最佳实践破坏者。

其中一个 HTML 覆盖层是一个不可见的 div,我将其用作“魔法探测器”。页面上有一个滑入/滑出的元素,我使用隐形div在该元素周围创建一个“热区域”,这样当鼠标悬停在这个神秘神奇的隐形div上时,该元素就会滑入/滑出。

问题是,当 div 后面有闪光并且不可见时(其中不可见意味着“无背景颜色”,而不是“显示:无”),IE7 不会检测到其上的悬停。一旦“不可见”元素具有背景颜色,IE7 就会检测到它。

以下是该问题的演示:http://lilleaas.net/woot/hoverdemo/ 。单击灰色框。将鼠标悬停在出现的最右边的框上。再次单击最左边的框,然后尝试将鼠标悬停在右边的框上(现在“不可见”,没有背景色,但它仍然在 dom 中,作为 display: block。)。

我的问题:即使div没有背景色,IE7是否也可以检测到悬停?

PS:我想跟踪鼠标的 X/Y 是一个可行的替代方案。


为了存档的目的,我也将相关的 HTML 粘贴到此处。在我的问题得到解答后,我链接的演示页面可能会关闭一段时间。

我在此示例中使用的 SWF 只是一个空白影片。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
  <script src="swfobject.js" type="text/javascript" charset="utf-8"></script>
  <script>
    $(function(){
      $("#thing").hover(function(){
        $("#debug").html("Hovered, via #thing");
      }).click(function(){
        $('#meh').toggleClass("colored");
      });

      $("#meh").hover(function(){
        $("#debug").html("Hovered, via #meh");
      });
    });

    swfobject.embedSWF("bg.swf", "main", "500px", "300px", "9.0.0", null, {}, {wmode: 'transparent'});
  </script>

  <style type="text/css" media="screen">
    body{
      margin:0;
    }

    #main{
      position:absolute;
      width:100%;
      height:100%;
      z-index:1;
    }

    #thing, #meh{
      width:200px;
      height:200px;
      position:absolute;
      z-index:2;
    }

    #thing{
      left:0px;
      background-color:#999;
    }

    #meh{
      right:0px;
    }

    #meh.colored{
      background-color:#666;
    }

    #debug{
      position:absolute;
      z-index:2;
      bottom:1em;
      background-color:#369;
    }
  </style>
    <title>invisible hovers</title>

</head>
<body>
  <div id="main"></div>

  <div id="thing">
    <p>Click to toggle color.</p>

    <p>In IE7, when the right box is colored, hover is detected. When the right box isn't colored, hover is not detected.</p>
  </div>
  <div id="meh"></div>

  <div id="debug"></div>

</body>
</html>

最佳答案

九月。 2009年10月

好吧,我已经很久才无意中路过这里了,谷歌搜索一些其他的东西。 但如果您还没有找到它,这也许会有所帮助:

  • IE 直接透过透明层(无背景)查看,就好像它不存在一样。
  • 但是你可以通过在透明层中添加透明背景img来让IE“看到”透明层!
  • 现在唯一的事情就是获得 flash 元素的透明度。您可以通过添加一些闪存参数来实现此目的。这些将改变 Flash 相对于其之上的 html 层的霸主地位。
  • 与此同时,所有 Flash 处理程序(swf 中的链接)都将关闭。因此,如果您想维护一些 swf 处理程序,则必须非常准确地定位“不可见层/区域”。

对于荷兰论坛,我制作了这个插图页面:http://developerscorner.nl/csshunter/flashlinks-uitschakelen.htm .

  • 顶部 swf 的左侧以及左侧菜单面板 swf 均未被覆盖。将鼠标悬停/单击此处会导致 swf 中的不同链接。
  • 现在,顶部 swf 的右侧有一个透明层,右侧的菜单面板 swf(与左侧的菜单面板 swf 相同)也被完全覆盖。
  • 顶部 swf 的右侧部分现在将转到“主页”(不可见的 html 链接,带有工具提示),而不是转到沿顶部全宽度链接的“移动中”页面 - swf。
  • 右侧菜单现在完全被那边的不可见层所覆盖,仅在 html 中实现了一个新链接,而不是自由选择菜单项。

在源代码中你可以找到所有成分!

关于html - 在 IE7 中检测覆盖 Flash 的不可见 div 上的悬停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/925817/

相关文章:

html - 如何在孔宽上连续对齐 3 个图像( Logo )并使它们在较小的显示器上保持这种对齐方式

javascript - 2 RSS feeds inside on one webapp

javascript - 如果重叠,则在窗口中重新定位 div

html - 如何将@media 查询放入 HTML 中?

javascript - FontAwesome + IE7 + 动态加载内容 = 痛苦

css - 为什么 <p> 和 <hr> 之间的垂直边距在 IE7 中不会折叠

javascript - 在圆环图中显示多个数据信息

html - 为什么 GMail 会忽略我在 HTML 电子邮件中的内联 <sup> 样式

css - 根据他的内容更改父 li 元素类

html - 负边距导致边框在IE7中消失