IE在某些情况下显示隐藏的div

时间:2010-04-06 15:07:35

标签: javascript html

在谷歌搜索并发现很多错误后,我仍然没有找到问题的描述。

最初的情况是标准的。我们有一个工具提示,它实际上是一个隐藏的div,将在鼠标悬停时显示在给定位置。 div隐藏了display:none并包含一个包含内容的表。我们尝试了不同的库来显示div(scriptaculous和jQuery Cluetip),但效果是一样的。

问题: 只要内容适合我的窗口宽度,一切都很好。但是当我调整它直到水平滚动条被激活时,隐藏div的内容将在激活工具提示时显示在页面的末尾。

这真的很奇怪,因为它只发生在这些前提下。当涉及多个工具提示时,浏览器甚至可能会崩溃(并且在Vista下将整个系统与他一起 duh )。

我知道解释起来有点复杂,但我希望有人至少听说过这个错误,并指出我正确的方向。

2 个答案:

答案 0 :(得分:0)

我使用工具提示的方法是使用隐藏和可见的可见性。一旦鼠标关闭,我将x和y设置为0,将工具提示移出观察空间。

仅当位置设置为绝对时才有效。

编辑:在显示工具提示时如何定位工具提示:

我通过更改“top”和“left”的css值来定位工具提示。

  

box.css(“left,e.pageX + 1);
  box.css(“top”,e.pageY + 1);

'e'是我的事件变量:

  

鼠标移动(函数(E){});

答案 1 :(得分:0)

在IE中将width css属性设置为“auto”(在W3C standard中定义)将导致<div>元素占用分配给它的整个空间。如果<body>元素未应用width,则可能会导致页面英里数和英里宽。这通常会导致浏览器崩溃,具体取决于操作系统。最好的选择是将其设置为null

(这是基于IE6的实际编码经验,可能不一定适用于IE7 +)。

要记住的另一件事是大多数浏览器都会执行所谓的“延迟渲染”,这意味着如果一个元素隐藏在页面上,它就不会渲染它。在它被取消隐藏之前,它甚至不会承认它的存在是一个潜在的可见对象。这意味着在你揭示它之前,不知道该物体有多大。如果你试图弄清楚将会是多么重要,这可能会导致问题。基本上唯一的方法是取消隐藏它,读取它的大小,重新隐藏它,然后继续。