2011-12-01 59 views
0

我想在覆蓋所有內容的div下面的元素上觸發單擊事件。Javascript/HTML:elementFromPoint only ever ever returns HTMLBodyElement

<div id='container'><div> 
    <div id='123'> 
    <a href=''>Example link to activate</a> 
    </div> 

所以我寫了下面的函數,但是這個函數只返回「[object HTMLBodyElement]」。任何想法爲什麼elementFromPoint不能識別鏈接元素?

  function onDocumentClick(event) { 

       container.style.visibility = 'hidden'; 
       var ele = document.elementFromPoint(event.x, event.y); 
       container.style.visibility = 'visible'; 
       alert(ele); 
       document.removeEventListener('click', onDocumentClick, true); 
       var e = document.createEvent('MouseEvents'); 
       e.initEvent('click', true, true);     
       document.addEventListener('click', onDocumentClick, true) 
      } 

回答

0

通過你調用elementFromPoint()時,#container元素,因此所有他的孩子被隱藏。 elementFromPoint()只看到可見節點。

請注意,xy屬性Event對象在瀏覽器中沒有很好的支持。更好地使用clientX/clientY

+0

感謝您的回答,但我不明白隱藏#container元素如何影響body元素的其他子元素,考慮到這些其他元素不是#container元素的子元素?這些其他元素仍然可見。 – Dave

+0

@Dave哦,我的標記中沒有看到任何結束標記(是不是有拼寫錯誤?),所以我認爲''是'#容器'的子項...我會看一次稍後再試。無論如何,再現問題的現場演示將會有所幫助。 – duri