2011-02-13 70 views
1

我有一個絕對定位的div,我試圖觸發mouseenter和mouseleave事件。在IE8/7中,div的背景顏色未指定(因此它默認爲透明),當光標穿過div的邊界時,mouseenter/leave事件不會觸發,只在div中間的某處以及光標位於div內的任何文本上。IE 8指定背景顏色更改元素行爲

當我嘗試通過向div添加背景顏色(例如background-color:green)來調試問題時,問題就神奇地消失了。 div的盒子模型非常完美,mouseenter /如預期的那樣開火。只有當div的背景顏色未指定(甚至明確設置爲透明)時,它才表現不正確。

任何想法?谷歌搜索這個IE bug/quirk沒有任何東西。

+0

有些代碼好嗎? – 2011-02-13 07:14:16

+2

這是我以前見過的IE中的一個bug。如果一個元素是100%透明的,那麼IE不會將其視爲鼠標事件。 – 6502 2011-02-13 07:30:14

回答

4

直到光標到達可見的東西,mouseenter和mouseleave纔會註冊。這不正確的行爲,但這是我們正在處理的資源管理器。

兩個可能的解決方案:

  1. 把細邊框上的DIV,一個匹配無論是它的背後,也不會被注意到。(這不起作用;請參閱評論。)
  2. 跟蹤鼠標移動事件並讓您的代碼確定鼠標何時進入感興趣的區域。
  3. (已添加;請參閱評論。)使您的背景成爲平鋪的透明1x1圖像。

不幸的是,兩種解決方案都非常糟糕。

編輯:問:mouseover和mouseout是否顯示相同的奇怪行爲?

0

要補充的是:在上面的答案中,使用解決方案3時,onclick也會觸發。總體而言,這是一個很好的解決方法,用於在IE中的透明元素上點擊透明元素。